我有个窗体,上面有dbgrid控件,QueryList和dbgrid相连接;并且该窗体上有个按钮,点击此按钮出现一个添加记录的窗体。我准备实现的功能是:添加记录后,主窗体的dbgrid会自动刷新。我试过了
   FormManChannel.QueryList.Close;   
   FormManChannel.QueryList.Open;
   或者
   FormManChannel.QueryList.Requery();等方法,现象却是:添加下一条记录的时候,在dbgrid里面才出现上一条记录;有的时候加了两条记录都不显示,增加第三条记录的时候,一下出来上面两条记录。我用的数据库为ACCESS,记得以前用BDE+Oracle的时候,这样的语句都能实现。另外,下面的语句可以实现
   //刷新主模块Query
   FormManChannel.QueryList.Close;
   Application.MessageBox('信息添加成功!', '系统提示', MB_OK + MB_ICONEXCLAMATION);
   FormManChannel.QueryList.Open;但是在用户点击对话框的“确定”按钮之前,dbgrid里面的空的,很不好看。请各位有经验的大虾帮我,不胜感谢!

解决方案 »

  1.   

    Active:=false;
    Active:=true;
    再加个book
      

  2.   

    你还是先CLOSE ,OPEN,再Locate吧
      

  3.   

    你还是先CLOSE ,OPEN,再Locate吧然后把 dbgrid 再 刷新一下
      

  4.   

    dataset控件有个disablecontrol过程,冻结数据感知控件更新
      

  5.   

    我是用Query与这样DBGrid配合的,在日期下拉控件中选中时间日期DateTimePicker1CloseUp事件中写的代码,
    with form1.Query2 do
                         begin
                          close;
                          sql.Clear;
                sql.add('select *  from zcrbjh where zcrq='''+mstr1+''' order by sbxh');
                          open;
                         form1.Query2.Active:=true;
                        form1.DBGrid1.Refesh;
                         end;
    不知道对你有没有用。