我有一个MainForm,上面有两个按钮,第一个按钮是弹出一个Form,可以在几个Edit里输入数据,然后点确定就可以更改数据库了,另一个按钮也弹出一个Form,有个DBGrid,显示数据库中的表。现在的问题就是:用第一个Form来更改数据后,再打开第二个Form,里面的DBGrid的数据不能显示更改后的数据,还是更改前的数据;还有就是第一个Form里的Edit控件的数据是用数据库里的数据初始化的,我在DBGrid里更改数据后,再打开第一个Form,里面的数据还是原来的。这些情况要重新编译程序才会显示更改后的数据...谁有什么办法啊?

解决方案 »

  1.   

    DBGrid的数据集就是一个表啊,我在第二Form的FormCreate里用了close,open,,第二位说的是修改完哪个啊?
      

  2.   

    我的意思是你用的是query来访问数据表还是table?
    如果是query,打开窗体的时候重新查询一下即可
    如果是table的话,先关闭以下,然后再打开即可~~或者直接dbgrid1.DataSource.DataSet.Refresh;
      

  3.   

    我用的是query,它的SQL是个select * from ...(和下面的sql一样),它的FormCreate里是
    procedure TForm2.FormCreate(Sender: TObject);    (放DBGrid的Form)
    var
      sql_query:string;
    with sncDM.DataModule1.sncQuery do
    begin
          Close;
          sql_query:='select * from ...';
          Sql.Add(sql_query);
          try
            Open;
          except
          end;
    end;
    end;
    我在用第一个Form改完数据后,再打开第二个Form,不是修改后的数据,还要在哪增加什么样的代码?
      

  4.   

    var 
      sql_query:string; 
    with sncDM.DataModule1.sncQuery do 
    begin 
          Close; 
          sql_query:='select * from ...'; 
          Sql.Add(sql_query); 
          try 
            Open; 
          except 
          end; 
    end; 
    这个放在form.onshow事件里