看了同样的问题,我就是解决不了,我有几个Form  我在前一个form中添加或修改了数据库,但是当我打开后面带有dbgrid(grid=狗X的?)的form中的数据还是修改之前的,我要让它更新还只有重新打开程序才可以,怎么让我的后面几个form中的DBgrid中数据,在前一个form更改后就可以立即更新。(不用重新再打开程序)!菜鸟弄了好久也解决不了,杯具啊~  求好心人指教!感谢!

解决方案 »

  1.   

    你让后面的几个form 中的数据集(Adoquery)重新close,open下,然后DBGrid刷新下。
    ADOQuery1.Refresh;
    DBGrid1.Refresh
    试试~
      

  2.   

    几个Form公用一个数据集就可以!
      

  3.   

    你这几个grid的连接的数据集不是指向同一个吧,比如grid1是adoquery1,grid2是adoquery2,如果adoquery1更新了,但是adoquery2并未更新,数据还是老的
      

  4.   

    我没有用那个adoquery,我还在学,用的datasource,adotable 另一个form用的是datasource ,adotaset
      

  5.   

    两个窗体上的adotable,datasource都是独立的吧,没有指向同一个adotable,你应该在窗体显示事件中,重新load当前窗体的adotable数据
      

  6.   

      当你在添加 修改的程序中加入 
       数据集控件.ACTION=FALSE;
       数据集控件.ACTION=TRUE;
    不就行了!
      

  7.   

    我怎么公用呢? 请教不同的form 如何公用?
      

  8.   

    procedure TForm3.FormShow(Sender: TObject);
    begin
          adotable1.Close;
          adotable1.Open;
          adotable1.refresh;
          dbgrid1.refresh;
    end;
    这是我结合上面的答案做的,谢谢大家,可以了!!
    顺便弱弱的问下:如何在不同的form中的dbgrid指向同一个数据集呢?
      

  9.   

    新建个DataModule窗体,然后将数据集放在这个窗体中,让其它窗体的DataSet都指向这个窗体的数据集。
    (前提是把这个窗体添加到其它窗体的Uses中)