更改数据库数据或重新查询后访问 2007 VBA 列表框滞后
Posted
技术标签:
【中文标题】更改数据库数据或重新查询后访问 2007 VBA 列表框滞后【英文标题】:Access 2007 VBA Listbox lag after changing DB data or Requery 【发布时间】:2011-09-07 20:17:03 【问题描述】:我最近遇到了一个非常烦人的问题。
我的列表框没有立即更新。例如,在我的主窗体“A”上有一个带有 sql 语句的列表框(简单...返回 5-20 行)。我在下面有一个编辑按钮,单击该按钮会打开一个新表单以更改数据。该表单提交一个更新查询,然后调用一个全局函数,该函数需要所有相关的列表框(表单 A 上的列表框)。唯一的问题是列表框没有改变,似乎挂起/滞后。如果我选择列表框并连续按 f5,几秒钟后它将正确随机刷新。
有人知道问题出在哪里吗?
我已经对此进行了两天的故障排除,并且知道这不是网络问题,因为它也发生在本地,使用记录集并循环它以手动设置列表框值工作得很快,但由于某种原因,我的应用程序中的所有列表框都是这样做。
这是我意外更改的设置,或者如果您定义了许多关系,是否会发生这种情况(我最近添加了另一个表)?
编辑: 忘了说,数据库在共享驱动器上,只有 2MB,最近才开始这样做。
【问题讨论】:
仅返回 5-20 行的查询,可能需要 long 时间才能返回,具体取决于查询的数据。执行速度与返回的行数不成正比。你有没有跟着调试?你能看到挂断吗? 我已经在调试中,代码运行良好,没有返回错误,列表框直到几秒钟后才更新 【参考方案1】:我最终发现了问题,希望这对将来的人有所帮助。
这与使用有关:
CurrentDB.Execute
此方法在后台同步运行,因此列表框在 sql UPDATE/INSERT/DELETE 完成之前被刷新。
为了解决这个问题,我改为使用:
Docmd.RunSQL
这已经解决了问题,但是我注意到这个方法只适用于 Microsoft Access 数据库。
【讨论】:
以上是关于更改数据库数据或重新查询后访问 2007 VBA 列表框滞后的主要内容,如果未能解决你的问题,请参考以下文章