【问题标题】:Compiled Access Program Runs Fine on 7 Computers but Crashes on 3 others编译的访问程序在 7 台计算机上运行良好,但在其他 3 台计算机上崩溃
【发布时间】:2020-01-13 01:55:16
【问题描述】:

我在 Microsoft Access 中编写了一个相当复杂的应用程序。它分为前端文件和后端文件。为了保护我的代码,我编译了它并将其保存为运行时 .accde 文件,然后我将其更改为 .accdr 文件以确保它作为运行时运行。我创建了该应用程序的两个版本:一个用于安装了 32 位 Office 的用户,一个用于安装了 64 位 Office 的用户。我使用 Inno Setup 将应用程序、数据文件和其他文件(如图标文件、许可证文件等)打包成一个可安装的包,效果很好。

在我的这个应用程序的 27 名 Beta 测试人员团队中,到目前为止,已有 6 人下载了它,我已经在我自己的四台计算机上对其进行了测试。在其中七台计算机上,安装工作完美,应用程序运行没有问题。

在我的三个测试人员的计算机上,当他们尝试运行它时,他们收到以下错误消息:

The expression On Open you entered as the event property setting produced the following error: Bad file name or number.
 * The expression may not result in the name of a macro, the name of a user-defined function, or [Event Procedure].

我很确定我知道导致问题的代码在哪里,但我终其一生都无法弄清楚为什么应用程序会在这两台计算机上崩溃,而在其他计算机上却没有。

我怀疑会导致问题的 On Open 事件检查链接表,获取它们的连接字符串,然后查看后端数据库的该字符串的路径。如果在那里没有找到,程序会弹出一个文件选择器对话框并指示用户找到数据文件,然后重新链接所有表。

如果有人能指出我解决此问题的正确方向,我将不胜感激。

【问题讨论】:

  • 如何重现该问题?告诉我更多关于成功/失败环境的信息。给我看失败的代码。或者我应该只是猜测。
  • 谢谢,donPablo,但我自己目前正在猜测失败的代码,因为它在我自己的所有 4 台机器上都能完美运行,我无法重新创建错误。测试人员有不同的环境,安装了 32 位和 64 位 Office,没有安装 Office,但使用 Access 运行时。我找不到崩溃的计算机之间的环境一致性。我怀疑这可能与链接表的自动重新链接功能有关,这就是我今天早上花了几个小时完全重写和仔细测试该例程的原因。

标签: vba ms-access


【解决方案1】:

这通常是由标记为 MISSING 的引用引起的。

您有两(三)个选项:

  1. 使用可调试代码的完整版 Access 在有问题的计算机上运行应用程序
  2. 创建一个小型测试应用程序,列出并验证您使用的引用,然后在有问题的机器上运行它
  3. 删除这两个客户

【讨论】:

  • 感谢您,但即使使用完整版的 Access,您也无法调试已编译的 Access 程序;而且我不愿意将我未编译的代码“放到野外”。
  • 然后删除这两个野用户。请查看编辑后的答案。
  • 但是,我正在重写自动重新链接功能的代码,因为我怀疑这就是问题所在。在我测试了这个新代码的傻瓜之后,我会把它发送给那些之前崩溃过的人,我们会看看我是否正确。我的最新理论是,它崩溃是因为只有在尝试重新链接到后端数据库时才在特定情况下发生的未捕获错误,可能是因为 BEDB 位于意外位置。
【解决方案2】:

感谢这里的所有贡献者。由于这些人和额外的在线研究,我能找到的最新答案是:

此错误发生在一小部分安装了该应用程序的计算机上,还没有人弄清楚原因、原因或解决方法。解决方法是安装2013 版本的 Access 运行时,因为更高版本仍然会导致问题。

至少有一台有问题的计算机正在运行即点即用版本的 Office。仍在收集信息,但这是目前的状态。

【讨论】:

  • 您能否提供参考资料,您从哪里获得这些信息?还有我这边的提示:尝试使用最旧的 Access 版本(在您的情况下为 2013 RTM)进行编译。使用已包含修补程序的 Access 版本进行编译可能会导致运行未(或更旧)修补程序 Access 的客户端出现问题。
  • To Unhandled Exception - 我很想提供参考资料,但我正在浏览这么多文章、电子邮件、帖子和其他参考资料,速度如此之快,我只是没有时间去追踪谁在哪里说了什么.感谢您提供这些意见,我将不得不看看我是否能以某种方式获得 Access 2013 的副本。这可能需要一些操作,因为 MS 似乎总是想将我更新到最新版本,无论我是否还好。但与此同时,我也会让计算机出现这些错误的用户尝试 Access 2013 运行时,看看会发生什么。是的,一团糟,好吧。
猜你喜欢
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多