我用adoquery来插入记录,插入一条记录后,DBGrid没有马上显示出来,
有什么办法可以让我每插入一条记录,DBGrid就能马上显示出来的?

解决方案 »

  1.   

    你的DBGrid的数据集用的不是adoquery?你从哪里录入?如果是Edit,你需要刷新DBGrid的数据集
      

  2.   

    to esu(ESU):
    我的DBGrid用的数据集是adotable,是用Edit和ComboBox来录入;
    怎样刷新DBGrid的数据集?
      

  3.   

    只要是绑定的,post就显示了...
      

  4.   

    to kobi(微笑猫:
    如果绑定?
      

  5.   

    adotable1.close;
    adotable1.open;
    就是刷新了,不过你要是写成这种
      adoquery1.ExecSQL;
      adotable1.Close;
      adotable1.Open;
    估计是刷不出来的(我以前碰到过,可能是因为延迟吧)你可以考虑用一个数据集,就不会有这种问题了
      

  6.   

    用DBGrid绑定的adotable来执行sql
      

  7.   

    实在不行,把adotable重新open一下,或使用refresh,我没测试.
      

  8.   

    可以用ADOTable的Apeend方法
    如:
    DataSource1.DataSet:=adotable1;
    DBGrid1.DataSource:=DataSource1;
    adotable1.Append;
    adotable1.FieldValues['name']=edit1.text;
    adotable1.FieldValues['classname']=combobox1.text;
    adotable1.Post;
    就可以了。试一试吧。
      

  9.   

    Table1.Open;
      Database_IniFile_Name:='happybb.ini';
      Database_IniFile:=TiniFile.Create(Database_IniFile_Name);  intnum:=Database_IniFile.ReadInteger('配置','总数',0);
      //DBGrid1.Enabled := false;
      for i:=1 to intnum do
      begin
        sChinese:=Database_IniFile.ReadString(IntToStr(i),'H','');
        sEnglish:=Database_IniFile.ReadString(IntToStr(i),'E','');
        sAuthor:=Database_IniFile.ReadString(IntToStr(i),'A','');
        Table1.InsertRecord([sChinese,sEnglish,sAuthor]);
        //DBGrid1.Refresh;
      end;//end for
      Database_IniFile.Free;
      Table1.Close;
      Table1.Open;
      DBGrid1.DataSource := DataSource1;
      DBGrid1.Refresh;
    这是一个从ini读数据写入数据库的,一开始dbgrid添加了数据后只能显示一条记录
    后来在添完记录后close table 然后open table and refresh dbgrid就可以了,
    不过不知谁能不用这方法也能一下显示所有数据
    学习交流一下吧哥们!!!!!!!!
    up