ADOQUERY + ACCESS 的刷新问题

musicdog 2004-07-19 05:35:36


两个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更新太慢?

有没有碰到这个问题的朋友,告诉我一下解决的办法,不胜感谢!
...全文
253 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lingyun2003 2004-07-24
  • 打赏
  • 举报
回复
up
kuanker 2004-07-20
  • 打赏
  • 举报
回复
问题已经解决
以删除为例
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绑定就可以了
qft516 2004-07-20
  • 打赏
  • 举报
回复
用控件TADOConnection来连接数据库,然后把ADOQUERY1,ADOQUERY2连接到TADOConnection就可以了。
IFindit 2004-07-20
  • 打赏
  • 举报
回复
没什么特殊情况,一个应用中所有的数据集尽量共享一个连接,这样没有反复打开链接所花的大量时间,自然程序就快了
musicdog 2004-07-19
  • 打赏
  • 举报
回复
to itlcx(飛龍)

换过了,问题依旧。


求助的帖子已经更换为

http://community.csdn.net/Expert/TopicView1.asp?id=3189782

说的更详细些。

itlcx 2004-07-19
  • 打赏
  • 举报
回复
是不是你的ADOQUERY先前的设置有问题?
有没有换个新的ADOQUERY试过?
musicdog 2004-07-19
  • 打赏
  • 举报
回复
唉,我换成 Microsoft OLE DB Provider for SQL Server ,对程序来说,只改了一个ADOQuery.ConnectionString,其他代码都不变,然后把ACCESS导入到 SQLSERVER 中,不能刷新的问题就不存在了。

可是这么点的一个小私活、小问题,却逼着我给客户装SQL Server吗?

拜托,谁能解决在ACCESS的问题,我再加100分。
musicdog 2004-07-19
  • 打赏
  • 举报
回复


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

郁闷了。
musicdog 2004-07-19
  • 打赏
  • 举报
回复
to zhlwyy(海龙)

你有没 QQ ?我可以发给你看看。很少几段代码
IFindit 2004-07-19
  • 打赏
  • 举报
回复
我觉得可能是来回建立连接花费的时间,两个ADOQury用同一个连接会好一点!
zhlwyy 2004-07-19
  • 打赏
  • 举报
回复
把你那段代码贴出来
musicdog 2004-07-19
  • 打赏
  • 举报
回复
to jacket008(§优国优民§)

刚刚跑到另外一台装有 server 2003 的机器上试过,问题依旧。

表里只有两条测试数据


这种操作,我用Microsoft OLE DB Provider for SQL Server/Oracle 都没出过问题,简单的关闭再打开第一个ADOQuery ,都会刷新了,偏偏这次是 ACCESS 和 Microsoft.Jet.OLEDB.4.0。
jacket008 2004-07-19
  • 打赏
  • 举报
回复
哪跑到别的机子试一下,如果还是这样就应该是你的程序问题!



你的数据会不会很大,ACCESS对于比较大的数据本身就慢了一点,但也不至于像你这样
musicdog 2004-07-19
  • 打赏
  • 举报
回复
to zhlwyy(海龙)

是的,提交了

第二个 ADOQUERY 执行的 sql 语句 是 insert/update/delete ,用 ADOQUERY.ExecSQL 直接提交到数据库
zhlwyy 2004-07-19
  • 打赏
  • 举报
回复
你肯定要Post一下
才能够提交到数据库呀
musicdog 2004-07-19
  • 打赏
  • 举报
回复
to jacket008(§优国优民§)

MDAC 是用 windows update 升级的最新的。
jacket008 2004-07-19
  • 打赏
  • 举报
回复
升级一下MDAC试一下
musicdog 2004-07-19
  • 打赏
  • 举报
回复
to workers(生为祖国扬威,死为军旗增辉)

第二个 ADOQUERY 执行的 sql 语句 是 insert/update/delete ,用 ADOQUERY.ExecSQL
workers 2004-07-19
  • 打赏
  • 举报
回复
第二个ado有没post啊?

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧