寻找隐藏的 MS 访问崩溃的根本原因
Posted
技术标签:
【中文标题】寻找隐藏的 MS 访问崩溃的根本原因【英文标题】:Finding underlying reason for obscure MS access crashes 【发布时间】:2013-07-25 18:16:48 【问题描述】:我在这里问了一个类似的问题:How to diagnose MS access crashes,如果有更好的方法来问一个密切相关的问题,我深表歉意。我一直在我们在业务中广泛使用的 MS 访问数据库中发生崩溃。我们已将一次崩溃缩小为一种非常奇怪的行为——当打开某个表单时,用户从 MS Outlook 中打开一封新电子邮件,这将导致 MS Access 发生严重崩溃并完全关闭。此行为似乎只发生在 Office 2013 中。有没有办法确定导致此崩溃的原因?
【问题讨论】:
在调试器中运行应用程序,并在打开相同的表单时让其他人向您发送相同的电子邮件。除此之外,如果没有该“某种形式”中涉及的代码并且不知道它的作用,没有人可以在这里为您提供帮助。您甚至根本没有描述“发生崩溃”是什么意思。 崩溃时,不应运行任何代码——表单可能会闲置数小时,但如果我们在 Outlook 中创建新电子邮件,整个 Access 程序将崩溃。我在这里下面的评论中说,我们在代码中的每个函数中都有错误处理和记录,它没有捕获错误,使我们相信错误发生在我们编写的任何代码之外。在这种情况下,“发生崩溃”意味着 Access 本身有错误并且整个程序关闭。 windows事件日志显示MSCOMCTL.OCX错误,不知道怎么调试 【参考方案1】:我认为处理更多意外/下落不明的错误的最佳方法是设置某种形式的错误处理记录器,就像 Allen Browne 建议的那样 http://allenbrowne.com/ser-23a.html
基本的想法是,您拥有正常的错误处理例程,而不是仅仅在消息框中向用户显示错误编号:
在我熟悉的错误 # 上执行此操作 在我熟悉的错误 #2 上执行此操作 如果发生意外情况,请写入有关错误的信息(您还可以在此处捕获可能有助于调试的其他信息,例如代码行参考)这不仅可以让您完整记录您的问题(而不是仅仅依赖错误消息并记住它们等),还可以让遇到崩溃但无法访问要收集的模块的用户错误数据给你!不幸的是,不可能复制用户遇到的每个问题,因此能够在表格中捕获这些信息并让 50 个用户为您收集错误信息真是太好了!
我不会在这里引用他的文章,但我强烈建议你试一试:)
【讨论】:
我们在整个数据库的所有功能中都有错误处理和报告功能。我正在谈论的崩溃似乎是 Access 程序级别而不是自定义代码 - 我认为 Office dll 导致了问题,但无法想出一种方法来跟踪它。【参考方案2】:见this answer。 具体来说,从表单中删除二进制数据部分将适用。
【讨论】:
以上是关于寻找隐藏的 MS 访问崩溃的根本原因的主要内容,如果未能解决你的问题,请参考以下文章