Vba 编译的Access程序在7台计算机上运行良好,但在其他3台计算机上崩溃

Vba 编译的Access程序在7台计算机上运行良好,但在其他3台计算机上崩溃,vba,ms-access,Vba,Ms Access,我用Microsoft Access编写了一个相当复杂的应用程序。它分为前端和后端文件。为了保护我的代码,我编译了它并将其保存为runtime.accde文件,然后将其更改为.accdr文件以确保它作为运行时运行。我已经创建了两个版本的应用程序:一个用于安装32位Office的应用程序,另一个用于安装64位Office的应用程序。我已经使用Inno安装程序将应用程序、数据文件和其他文件(如图标文件、许可证文件等)打包到一个可安装的包中,效果很好 在我的27个测试团队中,到目前为止有6个下载了这个

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

在我的27个测试团队中,到目前为止有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事件检查链接表,获取它们的连接字符串,然后查看后端数据库中该字符串的路径。如果在那里找不到,该过程将弹出一个文件选择器对话框,指示用户查找数据文件,然后重新链接所有表


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

这通常是由标记为缺失的引用引起的

您有两(三)个选项:

  • 在有问题的计算机上运行应用程序,并使用允许您调试代码的完整版本的Access
  • 创建一个小的测试应用程序,列出并验证您使用的引用,并在有问题的计算机上运行该应用程序
  • 把那两个顾客带走

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

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


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

    我如何重现这个问题?告诉我有关成功/失败环境的更多信息。给我看看失败的代码。或者我应该只是猜测一下。谢谢,donPablo,但我自己目前正在猜测失败的代码,因为它在我自己的4台机器上都能完美运行,我无法重现错误。测试人员有不同的环境,安装了32位和64位Office,没有安装Office,但使用Access运行时。我在崩溃的计算机中找不到环境的一致性。我怀疑这可能与自动重新链接链接表功能有关,而这正是我今天早上花了几个小时的时间,完全重写并仔细测试了该例程;我不愿意将我未编译的代码“发送到野外”,然后删除这两个野外用户。请参阅编辑后的答案。不过,我正在重新编写自动重新链接功能的代码,因为我怀疑这就是故障所在。在我测试了这段新代码之后,我会把它发送给那些之前让它崩溃的人,我们会看看我是否正确。我的最新理论是,它崩溃是因为在尝试重新链接到后端数据库时,只有在特定情况下才会发生未跟踪错误,可能是因为BEDB位于意外的位置。您能提供参考资料吗?这些信息是从哪里获得的?我这边的提示是:尝试使用最旧的Access版本(在您的例子中是2013 RTM)进行编译。使用已包含修补程序的Access版本进行编译可能会给运行非(或更旧)修补程序访问的客户端带来麻烦。对于未处理的异常,我很想提供参考资料,但我快速浏览了太多的文章、电子邮件、帖子和其他参考资料,我只是没有时间跟踪谁在哪里说了什么。感谢您提供的这些信息,我将不得不看看是否能以某种方式获得Access 2013的副本。这可能需要一些技巧,因为MS似乎总是想在有或没有我的同意的情况下将我更新到最新版本。但同时,我也会让计算机抛出这些错误的用户尝试Access 2013运行时,看看会发生什么。是的,真是一团糟。