我最近观察到,在设计视图中打开表单时,Access 和 VBE 会挂起 5-10 分钟。在此期间,应用程序在任务管理器中显示为没有响应。
如果在设计视图中打开表单时关闭 VBE,则不会发生这种情况。
这确实会发生在以下情况:
以下没有效果:
绑定和非绑定形式的行为是相同的。
谷歌对此没有太多了解。任何关于为什么会发生这种情况、如何调试它或如何修复它的想法将不胜感激。
[编辑:这不是解决方案。请参阅下一篇文章。]
感谢@Andre并如评论中所述,解决方案是打开一个新的空白数据库,然后从旧数据库导入相关对象。同样,正如OP中所述,反编译旧的ACCDB文件没有效果。
我使用 GUI(外部数据 > 访问 > 导入表、查询、表单等)执行导入,而不是使用众所周知但未记录的 Application.SaveAsText 和 Application.LoadFromText 方法。主要是,这是一个时间效率问题,因为我的版本控制代码库尚未完全实现后者。
导入对象后,我在 VBE 中添加了必要的 VBA 库引用,编译并保存了项目,链接到后端,然后重新开始工作,没有出现 OP 中描述的冻结迹象。
新前端文件编译后约为 20MB,而旧前端文件约为 29MB。这告诉我,旧版本中充斥着残余对象和未使用 msaccess.exe /decompile 开关清除的已编译代码。
事实证明,无论多么奇怪,问题的原因都是系统默认打印机的规格。
冻结发生在笔记本电脑上,其默认打印机已配置为连接到我家中的 Samba / CUPS 服务器的打印机,当我观察到此行为时,笔记本电脑尚未连接到该服务器。将控制面板中的系统默认打印机更改为本地 PDF 打印驱动程序消除了这种冻结以及我在其他应用程序中遇到的其他冻结。
系统或文件损坏与此无关。我已经通过 Windows 的各种修复实用程序(dism、sfc)和应用程序安装程序排除了这一点。
我在调查其他应用程序的类似冻结时偶然发现了这个解决方案,在一篇非常简短的文章中没有给出任何解释,在一个冗长的线程中,否则被伪专家对系统重新安装的吹嘘所堵塞。
不知道为什么默认打印机规格会触发此问题。找到解决方案后,我用谷歌搜索“Windows冻结默认打印机”,看看是否可以理解。看来,不是。我的印象是,与打印相关的冻结现象已经观察了十年或更长时间,但尚不清楚其原因或解决方案。大多数或全部建议都是不负责任的系统检修或重新安装建议,所有这些都可能完全是浪费时间。
有了解决方案但不理解它,我相信任何见解都会受到好评。