在FORM2.showmodel后面加上:
    dbgrid.datasource.dataset.refresh
   或者
    with  dbgrid.datasource.dataset  do
    begin
      close;
      open;
   end;

解决方案 »

  1.   


    用DBGRID.refresh当然不行,因为数据集体没更新,可以类似方法进行更新:
    若是table 就用talbe1.refresh;
    若是Query就用Query1.refresh;
    若是ADO控件,依次类推。
      

  2.   

    第一种方法我已也试过,不行。
    第二种方法我觉得不是根本的解决办法。
    明明TTABLE中的数据已经变化了,为什么却无法显示出来?
      

  3.   

    都试过,table、GRID包括DATASOURCE都关开一次都不行。
    只有将TABLE关开(CLOSE,OPEN)一次才行,可道理没有弄清楚啊。
    注:我用的是IBTABLE控件,
      

  4.   

    如果是指向同一个datasouce应该是要刷新的,可能在showmodel上,请问你的那个datasouce在form1中吗?
      

  5.   

    指向同一个TABLE,DATASOURCE,都在另一个单独的FORM3上。
      

  6.   

    post一下先?如何,看看有没有更新
      

  7.   

    post没有用,换回TTable控件就没有没有问题了,可能是IBTable的BUG
      

  8.   

    在form2中用显式事务控制post
    procedure Tform2.DoMywork;
    begin
       try
         IBTransaction1.StartTransaction;
         table1.open;
         showmodal;
         IBTransaction1.commit;
      except
        IBTransaction1.rollback;
      end; 
    end;
    不行改一下IBTransaction1.defaultaction//
             Ibdatabase.defaultaction
      

  9.   

    用两个DataSource就可以了
    不要太节约了
      

  10.   

    DBGRID.refresh 只是刷新表格,没有刷新数据联接,你只有刷新数据联接才能从跟本上得到新的数据,dbgrid.datasource.dataset.requery;就可以了.