两个ADOQUERY 通过  Microsoft.Jet.OLEDB.4.0 连接 access 数据库    1.  先用第一个 ADOQUERY 查询出一个表的数据,用DBGrid显示;    2.  再用另外一个 ADOQUERY 更新(删除、添加)这个表的数据,sql语句是insert/update/delete,用ADOQuery.ExecSQL提交    3.  执行之后紧接着 刷新第一个 ADOQUERY ,显示的数据却没有变化。    用 ADOQUERY.Close 和 ADOQUERY.Open 、ADOQUERY.Active:= false 和 ADOQUERY.Active:=true 、ADOQUERY.Refresh 、DBGrid.Refresh 这些方法,都不能刷新DBGrid中的值。    硬是要等到1-2秒之后再刷新才有效。    这个情况在Sql Server 和 Oracle 中都没有碰到。    是ACCESS数据更新太慢?是Microsoft.Jet.OLEDB.4.0更新太慢?
    1.  我的系统中的 Microsoft Data Access Component 是最新的……    2.  这段代码在其他多台机器上运行,问题相同……    3.  考虑到可能是Microsoft.Jet.OLEDB.4.0的问题,我改成通过ODBC连接ACCESS,对于代码来说,只改了ADOQuery的连接字符串,其他没有变化,结果是:问题依旧……    4.  把 ACCESS 导入到 SQL Server ,通过 Microsoft OLE DB Provider for SQL Server 连接,只改了ADOQuery的连接字符串,其他代码没有改变,结果是:问题不存在了……    但是这个小东西要用ACCESS,不用SQL Server。
    谁碰到并解决过这个ACCESS的刷新问题,请告诉我解决的办法,不胜感谢!另外再加100分……    谁对这个问题感兴趣,可以和我交换QQ,我把代码发过去,切磋一下。    

解决方案 »

  1.   

    我碰到过的问题是Refresh是什么数据库好像都不怎么吃的
    不过你说的用close,在open应该行的啊
    原来我也用Access做过的
    就用close,再用open就可以了
      

  2.   

    先Close,再Open
    在Access里我这么用没问题的
      

  3.   

    是否做了多个数据连接,每个数据连接Access都会生成一个临时交换文件,不同的连接中更新数据刷新会很慢
      

  4.   

    是啊,我也是碰到这样的问题,如果是复杂点的程序,我还是选择sqlserver,放弃了access
      

  5.   

    问题已经解决
    以删除为例
    id:=adoquery1.Fields[0].Value;
    adoquery2.Close;
    adoquery2.SQL.Clear;
    adoquery2.SQL.Add('delete from mytest where 编号=:id');
    adoquery2.Parameters.ParamByName('id').Value:=id;
    adoquery2.ExecSQL;
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Add('select * from mytest');
    adoquery1.Open;
    经测试,能够及时刷新
    删除能够了,那么其他操作也可以类似
    楼主如果要私下讨论,也可以
    我的QQ是88971159,随时可以联系我
      

  6.   

    上面还要几个控件ADOconnection1,ADOdatasource1,ADOquery1,adoquery2
    前面3个要绑定一下,adoquery2与adoconnection1绑定就可以了
      

  7.   

    to kuanker    的确是用上一个ADOconnection就可以了。    非常感谢,解决了。