两个ADOQUERY 通过  Microsoft.Jet.OLEDB.4.0 连接 access 数据库    1.  先用第一个 ADOQUERY 查询出一个表的数据,用DBGrid显示;    2.  再用另外一个 ADOQUERY 更新(删除、添加)这个表的数据,执行之后紧接着 刷新第一个 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.   

    to workers(生为祖国扬威,死为军旗增辉)    第二个 ADOQUERY 执行的 sql 语句 是 insert/update/delete ,用 ADOQUERY.ExecSQL
      

  2.   

    to  jacket008(§优国优民§)    MDAC 是用 windows update 升级的最新的。
      

  3.   

    你肯定要Post一下
    才能够提交到数据库呀
      

  4.   

    to zhlwyy(海龙)    是的,提交了   第二个 ADOQUERY 执行的 sql 语句 是 insert/update/delete ,用 ADOQUERY.ExecSQL 直接提交到数据库
      

  5.   

    哪跑到别的机子试一下,如果还是这样就应该是你的程序问题!你的数据会不会很大,ACCESS对于比较大的数据本身就慢了一点,但也不至于像你这样
      

  6.   

    to  jacket008(§优国优民§)    刚刚跑到另外一台装有 server 2003 的机器上试过,问题依旧。    表里只有两条测试数据    
        这种操作,我用Microsoft OLE DB Provider for SQL Server/Oracle 都没出过问题,简单的关闭再打开第一个ADOQuery ,都会刷新了,偏偏这次是 ACCESS 和 Microsoft.Jet.OLEDB.4.0。
      

  7.   

    我觉得可能是来回建立连接花费的时间,两个ADOQury用同一个连接会好一点!
      

  8.   

    to  zhlwyy(海龙) 你有没 QQ ?我可以发给你看看。很少几段代码
      

  9.   

        刚把 Microsoft.Jet.OLEDB.4.0 换成 ODBC 也不行。    郁闷了。
      

  10.   

    唉,我换成 Microsoft OLE DB Provider for SQL Server ,对程序来说,只改了一个ADOQuery.ConnectionString,其他代码都不变,然后把ACCESS导入到 SQLSERVER 中,不能刷新的问题就不存在了。可是这么点的一个小私活、小问题,却逼着我给客户装SQL Server吗?拜托,谁能解决在ACCESS的问题,我再加100分。
      

  11.   

    是不是你的ADOQUERY先前的设置有问题?
    有没有换个新的ADOQUERY试过?
      

  12.   

    to  itlcx(飛龍)     换过了,问题依旧。
        求助的帖子已经更换为 
        
        http://community.csdn.net/Expert/TopicView1.asp?id=3189782    说的更详细些。
      

  13.   

    用控件TADOConnection来连接数据库,然后把ADOQUERY1,ADOQUERY2连接到TADOConnection就可以了。
      

  14.   

    问题已经解决
    以删除为例
    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,随时可以联系我
    上面还要几个控件ADOconnection1,ADOdatasource1,ADOquery1,adoquery2
    前面3个要绑定一下,adoquery2与adoconnection1绑定就可以了