我有一个带有拆分数据库的MS Access(2013)应用程序。一切似乎都顺利进行,除了偶尔我会得到Error 3048: Cannot open any more databases.
当前端尝试运行vba代码时会发生错误,该代码涉及从后端提取数据,并且会在使用Set DB = OpenDatabase()
或DoCmd.RunSQL()
命令的任何行上停止。
奇怪的是,这个错误似乎是基于时间的。如果我做得足够快,我可以无错误地访问后端数百次,但经过一段时间后(~1小时)出现错误。事实上,我可以打开应用程序并让它在后台运行(没有代码运行),然后在一小时后返回它,我将在代码第一次尝试打开后端时收到错误。
我搜索了这个网站的长度和呼吸并谷歌寻求解决方案,所以我知道此错误已经解决过。为了节省人们重复通常的修复,我将列出我迄今为止测试的内容并没有成功:
记录集限制:我不打开任何记录集,每次打开记录集时都要关闭它。数据库也一样。我的所有要求
后端通过3或4个vba函数完成,每个函数都有
与Rec.Close
相对应的DB.Close
或OpenRecordset()
和OpenDatabase()
我从来没有超过2个记录集开放
一时间。
控制限制:我在应用程序中的最大表单上有151个控件,所以我应该低于限制(我相信单个表单是245)?
损坏数据库:我已将所有表单和代码复制到新的Access数据库并运行压缩和修复。
机器问题:我在多台机器上测试了应用程序并重现了同样的错误。
无论如何,在上述大多数情况下,我都希望应用程序根本不运行,而不是在一段时间内正常运行然后崩溃。
其他一些注意事项:
Citrix用户:用户分为正在遇到此错误的正常Windows计算机用户和通过虚拟桌面软件(Citrix)使用该应用程序但没有问题的用户。不幸的是,我对这个虚拟桌面知之甚少,无法真正弄清楚这意味着什么。
背景与前景:有些用户声称应用程序仅在已运行很长时间时才会崩溃并且他们切换到另一个程序并切换回来。我已经确认只需在应用程序和其他程序之间切换就不会导致它崩溃但是还不能让它在前台运行足够长的时间以确认它是否崩溃而不在程序之间切换。
我几天都在苦苦挣扎,有人能帮助我吗?