操作Access数据延迟问题(至急)

wybestonline 2009-09-16 09:26:27
现在开发的是纯Access项目:Aceess+VBA

在Access画面中输入数据,相当于直接操作Access MDB中的表。

但是之后用DAO方式打开刚才在Access画面中操作的表,却发现数据没有写进表中,延迟一段时间后,或者下一次用DAO操作的时候才可以发现前一次操作的数据被写进了MDB文件中的表里。

这种情况也不是每一次都会发生,在一个画面中反复操作四五次之后,产生的频率就很高了。

搜索了一下,很多人回答是用SLEEP(300)就可以解决,实际尝试了,还是不能解决问题。
从原理上SLEEP暂停了所有操作,不应该会有什么效果吧(个人意见)。

究竟应该如何去消除Access数据库德这种延迟呢?请指教!谢谢
...全文
621 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyi830 2009-09-17
  • 打赏
  • 举报
回复
连接打开后,操作完成,没有及时关闭吧!
关闭语句怎么写的?
ACMAIN_CHM 2009-09-16
  • 打赏
  • 举报
回复
建议楼主做一个测试用的MDB文件,不需要你的商业数据和界面,只要能模拟你的问题即可。
否则很难在猜测中找出问题所在。

现在连第一步都没确定:
1。 DAO 更新延时
2。 FORM未及时刷新

先想办法确定是这两种中的哪一个。
ewang11 2009-09-16
  • 打赏
  • 举报
回复
操作DAO前,查看一下表里的数据有没有被更新
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 wwwwa 的回复:]
FORM中有什么控件?控件绑定数据源?

如果可以的话,
上传你的MDB到www.access911.net/csdn
只要有问题的表、查询 form,用WINRAR压缩
[/Quote]

实在抱歉,是正式应用的商业系统,所以无法将MDB上传。
Form控件就是些文本框、下拉框、List、按钮等。
文本框、下拉框、List都会有数据源绑定。
WWWWA 2009-09-16
  • 打赏
  • 举报
回复
FORM中有什么控件?控件绑定数据源?

如果可以的话,
上传你的MDB到www.access911.net/csdn
只要有问题的表、查询 form,用WINRAR压缩
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
出现问题的这一部分是单机的,操作本地MDB文件时出现的。
直接设定Form的数据源为某个表,然后直接操作Form输入数据就相当于操作MDB中的表了。
WWWWA 2009-09-16
  • 打赏
  • 举报
回复
你是网络还是单机,控件绑定数据源?
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ewang11 的回复:]
应该没有发生AFERUPDATA事件的。
通过点击画面上的某一个按钮来操作后续的数据取得等内容的

如果输入的数据没有离开焦点,这时你点按钮操作,实现上窗体上的数据实际上还没有写到表里去,数据当然读不到了


点按钮前刷新一下窗体试试
[/Quote]

现在对recordset和窗体刷新,两种方法都进行了实验,还是无法解决这个问题的。

请指教,谢谢
WWWWA 2009-09-16
  • 打赏
  • 举报
回复
呵呵,ADO+MDB是有延迟的多次遇到,
比如UPDATE OR INSERT 后,马上SELECT,记录集是没有变化,OLD的
ewang11 2009-09-16
  • 打赏
  • 举报
回复
ADO 的延时一般会有十几秒。


不会吧,我一直用ADO都很好,处理方式问题吧
WWWWA 2009-09-16
  • 打赏
  • 举报
回复
rsw.Requery
or
刷新窗体
试试
ewang11 2009-09-16
  • 打赏
  • 举报
回复
应该没有发生AFERUPDATA事件的。
通过点击画面上的某一个按钮来操作后续的数据取得等内容的

如果输入的数据没有离开焦点,这时你点按钮操作,实现上窗体上的数据实际上还没有写到表里去,数据当然读不到了


点按钮前刷新一下窗体试试
ACMAIN_CHM 2009-09-16
  • 打赏
  • 举报
回复
ADO 的延时一般会有十几秒。

你现在用DAO延时是多少?
如何 模拟或再现你的问题?
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wwwwa 的回复:]
向MDB表页数据就是通过直接将表绑定到MDB中的Form,在Form中输入数据就相当于直接操作MDB的表了:

离开字段就应该存盘了,SQL语句没有问题吧?
[/Quote]
SQL应该没有问题的,这种延迟的问题是偶尔出现,操作频率较高、速度较快的时候延迟现象经常出现。
WWWWA 2009-09-16
  • 打赏
  • 举报
回复
向MDB表页数据就是通过直接将表绑定到MDB中的Form,在Form中输入数据就相当于直接操作MDB的表了:

离开字段就应该存盘了,SQL语句没有问题吧?
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 acmain_chm 的回复:]
一般来说ADO 会有延时,DAO不会有啊。

你的代码是什么?(写数据的那一段)
[/Quote]
向MDB表页数据就是通过直接将表绑定到MDB中的Form,在Form中输入数据就相当于直接操作MDB的表了
WWWWA 2009-09-16
  • 打赏
  • 举报
回复
rsw.Requery
ACMAIN_CHM 2009-09-16
  • 打赏
  • 举报
回复
一般来说ADO 会有延时,DAO不会有啊。

你的代码是什么?(写数据的那一段)
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ewang11 的回复:]
在Access画面中输入数据,相当于直接操作Access MDB中的表。

但是之后用DAO方式打开刚才在Access画面中操作的表,却发现数据没有写进表中,延迟一段时间后,或者下一次用DAO操作的时候才可以发现前一次操作的数据被写进了MDB文件中的表里。

首先检查输入的数据有没有发生AFERUPDATA事件,焦点没转移,数据当然不会马上写入到数据库中

[/Quote]
应该没有发生AFERUPDATA事件的。
通过点击画面上的某一个按钮来操作后续的数据取得等内容的
wybestonline 2009-09-16
  • 打赏
  • 举报
回复
Dim dbW As DAO.Database
Dim rsw As DAO.Recordset
Set dbW = DAO.OpenDatabase("MDB file path.........")
strSql = "............."
Set rsw = dbW.OpenRecordset(strSql)

就是这种方式来打开mdb文件的。
加载更多回复(14)

7,714

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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