拆分Access数据库后,我发现在MS Project中运行的VBA代码(在Access中调用)已经大大降低了速度(降低了大约6倍)。
我在没有网络流量的本地PC上都使用MS Access 2016和Project 2016。
MS Project中的VBA代码对Access数据库进行了一系列查找,而这些过程运行缓慢。如果我的Access Backend在公司网络上,我本来会期望会变慢,但是当后端和前端以及MS Project都在本地时,我会惊讶地发现变慢。
有什么建议吗?
谢谢
埃里克
答案 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-互联网上有很多有关如何执行此操作的示例,但我找不到一个简单的简单示例。