【问题标题】:MS Access changing reference path to a no longer existing pathMS Access 将参考路径更改为不再存在的路径
【发布时间】:2012-01-05 21:43:02
【问题描述】:

当我在 Windows 7 SP1 64 位上编译 MS Access 2003 应用程序并在 Windows 7 SP1 32 位上启动它时,Microsoft 通用对话框控件 6.0 (SP3) 路径从 C:\Windows\SysWOW64\comdlg32.ocx 更改为 \\shared\access\comdlg32.ocx,这是应用程序的共享驱动器从 Windows 7 SP1 32 位用户启动。

我需要 32 位机器上的参考是:C:\Windows\System32\comdlg32.ocx

32 位机器错误出现在:Dim Cnxn As ADODB.Connection Set Cnxn = New ADODB.Connection 但是当通过将应用程序下载到 32 位机器,浏览 comdlg32 文件,将其添加为引用并重新编译来正确引用通用对话框控件时,应用程序工作正常在 32 位电脑上。

Common Dialog Control 与 ADODB 有什么关系? 我认为我不会在任何地方使用 Microsoft 通用对话框控件。我会做更多的测试...

【问题讨论】:

  • 你用这个参考是为了什么目的,也许你根本不用它,可以摆脱它......
  • @Arnoldiusss 当我删除它时,我得到运行时错误:类不支持自动化。
  • Comdlg32.OCX 安装注册了吗?
  • 您使用的是哪个版本的 Access 需要通用对话框控件,因为 AFAIK,这不是一个好主意?
  • Comdlg32 在 windows 7 64bit 机器上注册。我还没有签入32位机器。如果我在 32 位机器上编译访问应用程序,它会正确引用并工作。但我不想这样做,因为它是用户电脑。访问 2003 SP3 11.8321.8333

标签: ms-access vba ms-access-2003


【解决方案1】:

如果您将其用于文件对话框,请删除引用并将其替换为本文中的解决方案:

http://access.mvps.org/access/api/api0001.htm

编辑:这也应该适用于较新的版本,因为它只是一种使用 comdlg32.ocx 控件的方法。

您会收到 ADODB 错误,因为这是另一个引用,当 comdlg32.ocx 加载失败时,Access 会退出加载引用的循环,因此不会加载 ADODB 组件。

您可以尝试的另一个选项是删除引用并使用后期绑定,例如

Dim fDialog As Object ' previous Office.FileDialog
Set fDialog = CreateObject("Office.FileDialog")

【讨论】:

    【解决方案2】:

    引用与 ADODB 无关。

    查看您是否在使用它的测试很简单:删除引用。如果项目编译失败,则说明该引用正在使用中。

    如果您没有使用参考,请将其删除,您的问题就解决了。如果您正在使用该参考,则可以按照 Arnoldiusss 的建议将其功能替换为 Windows API 调用。

    【讨论】:

    • 最新版本的 Access 中已经提供该功能绝不是不可能的。 Arnoldiusss 引用的示例在 Access '97 中是必要的,但在 2003 年则不需要。
    • @Remou 如果您指的是 Access FileDialog,它在运行时应用程序中不起作用(而且我曾经专业从事过的每个 Access 项目都是作为运行时应用程序分发的)。
    • 我刚刚使用 Access 2010 accde 进行了测试,/runtime 开关和 application.filedialog 似乎工作正常。
    • 可能是这样。但是,我很确定它不适用于 Access 2003 中的 mde 数据库,并且该问题已标记为该版本。虽然我相当确定我已经测试过了,但那应该是 5 年或更长时间了,而且我现在不在工作(我可以访问 Access 2003),所以我无法重复测试。
    • Filedialog 在 Access 2003 运行时工作得很好,我为许多使用此功能的人部署了应用程序。它是在 2003 年添加的。对于 64 位版本的 Access 2010,您必须将您的 api 修改为 64 位,因此对于一直到 2010 年的 access 2003,我建议使用文件对话框(我建议将其用作后期绑定)。我会推荐 api,但由于 Access 2010 现在有一个真正的 64 位版本,那么您需要维护两个版本,或者至少重新编写并将 32 位 api 调用更改为 64 位调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2021-10-12
    相关资源
    最近更新 更多