accde 使用运行时运行停止任何代码执行

问题描述 投票:0回答:2

我已将旧的 Access 2003 数据库升级为 Access 2010。原始数据库分为访问前端(安装到客户端)和后端(驻留在服务器上)。新数据库前端使用access,但后端已移至SQL server。

完成后,我创建了一个 accde 文件并将其打包在安装程序中以将其分发到所有客户端电脑。安装程序会创建一个桌面快捷方式,该快捷方式在运行时模式下运行 Access 2010 并启动前端数据库。

我在本地进行了测试,在我的开发电脑上一切正常。但在测试客户端电脑(安装了 Office 2010)上,它在打开数据库时出现错误,导致所有代码停止执行。这显然是一个非常严重的错误,并阻止任何人使用数据库。

错误是

The expression On Current you entered has the event property setting produced the following error
The expression may not result in the name of a macro, the name of a user defiend function, or event procedure.

我已确保数据库位于受信任的位置,并在启用所有宏的情况下进行了尝试,但仍然出现相同的错误。在创建 accde 之前,我还确保所有代码都可以编译。

我已在干净的测试电脑上手动复制了 accde 文件,以检查安装程序是否有问题,甚至以完全访问权限打开 accde(即不使用 /runtime 标志)也会出现相同的错误。如果我将 accdb 文件复制到客户端电脑,那么它可以正常运行,但显然分发 accdb 并不是运行数据库的安全方法。

我还尝试创建一个空白的 access 2010 db 并从更新版本(这是一个转换为 accdb 的 mdb 文件)导入所有对象,以检查 access 转换原始 mdb 的方式是否有问题 - 仍然同样的错误。

有人之前遇到过这个错误/可以为我解释一下吗,我真的很困惑。

编辑:在测试客户端电脑上玩过之后,我注意到,如果我打开 accdb 文件,然后将其另存为 accde,覆盖已安装的版本,那么它将正常工作。但这显然增加了所有客户端安装的巨大开销,并消除了自动化安装的能力。所以它本身并不是一个真正可行的解决方案......希望它能为某人指明正确的方向。

EDIT2:我还检查并确认所有引用都完好无损,即 dll/ocx/etc 并存在于测试客户端电脑上

ms-access ms-access-2007 ms-access-2010
2个回答
1
投票

这听起来确实像是一个典型的参考损坏问题。

我将确保此处的 VBA 引用绝对最少。 (在您的开发计算机上,创建一个空白的 accDB 文件,然后在 VBA 编辑器中查看默认引用 - 这就是您的生产 accDB 所需的内容,然后将其编译成 accDE)。

在将代码编译到 accDE 之前,我还会考虑对 accDB 进行反编译。

SP1 Office 更新还会导致 VBA 损坏的问题。如果您的参考资料没问题(并且您正在使用后期绑定来实现 word/outlook 等的任何自动化),那么我会在安装 SP1 后考虑,然后还安装 saccess 2010 的 VBA 修补程序。因此请尝试使用 sp1 + 代码修补程序.

VBA 修补程序在这里: http://support.microsoft.com/kb/2596585

上述内容相当新——从 10 月 25 日开始,但您要确保首先检查/测试其他步骤,否则您将陷入徒劳无功的境地,这可能会给您带来更多悲伤。


0
投票

解决这个问题最简单的方法就是将accdb保存在外机上。打开 accdb 并转到“文件”,然后“另存为”选择 accde。保存ACCDE。现在数据库由 PC 用户拥有,并且被标记为“保存”。 这对我有好几次有用

© www.soinside.com 2019 - 2024. All rights reserved.