数据库:Paradox 表。用 TQuery 操作数据库(全用SQL语言)。用“INSERT INTO”语句插入一条记录后,在 TDBGrid 没有立即显示出来。
再调用 TQuery 和 TDBGrid 的 Refresh 过程后,插入的数据还是没有显示出来。
只有重新用“SELECT * ”语句才显示出来。
这种方法虽然可以,但有许多的缺陷(强烈的闪烁,并且,当前记录会变为第一条)。不知可用什么方法实现即时显示?
还请各位大侠相助

解决方案 »

  1.   

    with query do
    begin
      insert;
      ...
      post;
    end保证你的DBGrid也是连的这个query
    这样就可以
      

  2.   

    with query do
    begin
      insert;
      query.close;
      query.sql.clear;
      query.sql.add('INSERT INTO.......');  
      query.execSQL;           //此行会产生异常
      post;
    end
      

  3.   

    TO
      sheepcyk(一面湖水) 你的方法我已经试过, 没用
      

  4.   

    with query do
    begin
      RequestLive:=true;
      Append;
      FieldByName('field1').AsString:=..;
      ...   //依次给字段赋值,就是你要插入的值
      Post;
    end;
      

  5.   

    你把QUERY关了再打开
    QUERY.CLOSE;
    QUERY.OPEN;
      

  6.   

    Post后将DBGRID Refresh一下1!!!
      

  7.   

    说明.
    要用 SQL 语句插入记录.
      

  8.   

    那样很难实现你想要的效果,
    只能Close、Open,然后重新定位。
    解决不了闪烁问题。
      

  9.   

    with Query do
    begin
     //记录下当前纪录的值
     DisableControls ;
     Close;
     Open;
     //Locate查找
     EnableControls;
    end;
    //可以用来解决刷新问题
    要解决刷新后的定位你在Close之前记录到选中纪录的某个主键值
    Open之后再用Locate()本地定位就行了!
      

  10.   

    Paradox 没有用过,但是TQuery在Post后是可以及时刷新的呀。
    不行的话,不要用Insert语句。用TQuery的Append方法。
      

  11.   

    TQUERY的关键属性设置:
    *******************
    RequestLive:=true;
    *******************
      

  12.   

    用Close,Open刷新前暂存当前记录的键值。
      

  13.   

    你可以先把添加的数据在dbgride里面缓冲
    然后提交一下是个参考:////////////////记录暂存在dbgride中
    procedure Tfrm_setPicture.btn_addClick(Sender: TObject);
    begin
      btn_add.Enabled := false;
      query1.InsertRecord([strtoint(edt_picid.text),edt_picname.text,strtoint(edt_picheight.text),strtoint(edt_picwidth.text)]);
      btn_commit.Enabled := true;
      btn_add.Enabled := false;
      imgpic.Picture := nil;
      edt_picid.Text := '';
      edt_picname.Text := '';
      edt_picwidth.Text := '';
      edt_picheight.Text := '';
    end;////////将添加的记录提交/////////////
    procedure Tfrm_setPicture.btn_commitClick(Sender: TObject);
    begin
      dm.Database.StartTransaction;
      try
        query1.ApplyUpdates;
        query1.CommitUpdates;
        dm.Database.Commit;
      except
        application.MessageBox('处理数据有误,请重新添加','提示',mb_iconerror+mb_ok);
        query1.CancelUpdates;
        dm.Database.Rollback;
      end;
    end;