拆分Access DB(本地PC,而不是网络)后,VBA非常慢

时间:2019-01-08 14:45:25

标签: vba access-vba ms-access-2016

拆分Access数据库后,我发现在MS Project中运行的VBA代码(在Access中调用)已经大大降低了速度(降低了大约6倍)。

我在没有网络流量的本地PC上都使用MS Access 2016和Project 2016。

MS Project中的VBA代码对Access数据库进行了一系列查找,而这些过程运行缓慢。如果我的Access Backend在公司网络上,我本来会期望会变慢,但是当后端和前端以及MS Project都在本地时,我会惊讶地发现变慢。

有什么建议吗?

谢谢

埃里克

1 个答案:

答案 0 :(得分:1)

最有可能的是,您遇到的变慢是后端文件在被前端访问时反复打开和关闭。公认的解决方案是打开前端和后端之间的持久链接。这样,只要前端处于打开状态,后端文件就会保持打开状态。

要进行此设置,您将需要在后端中创建一个空表,该表在项目中的其他任何地方都不会使用。我称它为tblKeepOpen

示例代码:(在AutoExec宏中调用)

Public Sub KeepBackendLinkOpen() 
    Static rsOpen As DAO.Recordset ' Static makes the Recordset reference persist
    Set rsOpen = CurrentDb.OpenRecordSet("SELECT * FROM tblKeepOpen", dbOpenSnapshot)
End Sub

该参考将一直存在,直到VBA解释器崩溃或丢失状态为止。您可以通过在立即窗口中运行KeepBackendLinkOpen或再次运行AutoExec来重新加载链接。

有些人喜欢以隐藏形式管理持久链接。您的选择。

PS-互联网上有很多有关如何执行此操作的示例,但我找不到一个简单的简单示例。