form1上一个adoquery1和dbgrid相感应
有一个button1
点击button1,
procedure Tform1.Button1Click(Sender: TObject);
begin
form2:=Tform2.create(application);
form2.showmodal;
form2.Free;
adoquery1.close;
adoquery1.open
end;form2是输入一些数据到表中
procedure Tform2.button1click(Sender: TObject);
begin
........
self.close;
end;问题是from2关闭后,form1里dbgrid的数额依旧
没有刷新?????????

解决方案 »

  1.   

    在关闭窗体之前可不可以用一下
               adoquery1。Refresh
      

  2.   

    form1和from2上各有一个adoquery1
    他们两没有关系
      

  3.   

    ADOQuery1.Close;ADOQuery1.SQL.Text:='Select * from Table';
    ADOQuery1.Open;用Refresh不行的。
      

  4.   

    这样也不行
    procedure Tform2.button1click(Sender: TObject);
    begin
    ..........
    form1.adoquery1.close;//加这两行
    from1.adoquery1.open;//
    self.close;
    end;
      

  5.   

    注:form2的adoquery1负责插入数据(对同一张表)  
    这张表就是form1上dbgrid显示的表。
      

  6.   

    你用的是什么数据库,如果是MSSQL,
    form1.adoquery1.close;//加这两行
    from1.adoquery1.open;//肯定是行的
      

  7.   

    不会是没有post吧,或者吧你的程序代码form2的贴出来看看
      

  8.   

    form2上的adoquery1
    是:
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('insert into aaaa .....');
    adoquery1.execsql;
    数据库里确实有数据插入,form1关闭后再打开,就有。
      

  9.   

    可以做个试验procedure Tform1.Button1Click(Sender: TObject);
    begin
    form2:=Tform2.create(application);
    form2.showmodal;
    form2.Free;
    adoquery1.close;
    //  adoquery1.open; // 先去掉,看看 dbgrid 还有显示否?
    end;// 添一个按钮 button2
    procedure Tform1.Button2Click(Sender: TObject);
    begin
      adoquery1.open; // 看看能显示否?
    end;
      

  10.   

    这是我一直困扰的问题之一!我也碰到过这个问题,最早的时候我没办法只好写了个BUTTON 来点击refresh(丢人哪)。这段时间我想的这个问题是否可以这样来解决,在FORM1的ONSHOW 里面写打开DBGRID的代码,但我感觉根本的解决办法还是在FORM2关闭的时候发送消息给FORM1让BUTTON点击!我没试过只是这样的想法。
    关注!!!!!
      

  11.   

    刚做了下实验,我这样做可以实现:
    FORM1 UNIT1 (application)
    form2 unit2 (form)
    unit1 在implamentation 中USE unit2
    在unit1的interface 中use unit2
    在unit1的onshow中写
    with adoquery1 do
    begin
       close;
       sql.clear;
       sql.add(' select * from bom ');
       open;
    end;unit1的button1写
    form2.showmodule;
    unit2中加adoquery1,button1
    button1中写
    with adoquery1 do
    begin
        close;
        sql.clear;
        sql.add(' insert bom ');
        sql.add(' values (3,4) ');
        execsql;
    end;
    form1.formshow(self);
    self.close;这样写OK关闭FORM2的时候FORM1中REFRESH了!
    你可以试一下,供参考!
      

  12.   

    1.你是不是设置了adoquery的locktype属性
    2.你看看数据表里有没有你所加的数据
    3.有点建议:A.你的代码的对齐风格好想不太好!
                B.如果你用两个窗体添加数据,我认为最好相同的数据原,
                  这样可以达到及时更新!
      

  13.   

    确实有这种问题,需要过一段时间才能显示新的内容
    这样,把数据库连接关掉,再打开
    Adoconnection.close
    Adoconnection.open;
      

  14.   

    adoquery1.Active=false;
    adoquery1.Active=True;
      

  15.   

    用ACCESS有这种问题吗?
    我倒是没有碰到过,你试试: miaomiaowq(猫的老师-老虎的克星:武松) 的方法看看:
    form2:=Tform2.create(application);
    form2.showmodal;
    form2.Free;Adoconnection.close
    Adoconnection.open;
    adoquery1.Active=false;
    adoquery1.Active=True;