我最近在安装 MS Office 2007 时遇到了与 Access 2007 有关的重大问题,它给出了一个错误,提示无法正确引用 ActiveX Data Objects 6.1。
在尝试解决问题时,我发现 Office 安装有两个非常相似的文件夹:
C:\Program Files (x86)\Common Files\System\ado\
C:\Program Files \Common Files\System\ado\
两个文件夹的内容非常相似,但所有文件的大小略有不同。许多 Access 引用 ActiveX 数据对象都存储在这里。
我发现默认情况下我的 Access 参考导航器会引导我进入该(x86)
文件夹,而另一个文件夹则不是可供我导航并选择实际所需的 DLL 文件。
我还发现微软从未发布过 64 位版本的 Office(我怀疑这个信息),我认为这意味着所有文件都放在文件(x86)
夹中是有意义的。
为什么会有两个不同的文件夹,但文件名几乎相同(大小不同)(这意味着同名文件的代码不同)?
这是否意味着 ActiveX Data Objects 6.1 有两个不同版本?
这是否意味着我的问题在于我无法引用正确的文件版本?
附言:我最终不得不通过运行安装 CD 中的修复命令来修复该错误。
答案1
Microsoft 提供了 32 位和 64 位版本的 ActiveX 数据组件。这样,软件开发人员就可以制作使用这些组件的 32 位和 64 位程序。它们大小不同的原因是 32 位和 64 位内存指针大小不同。(通常,这意味着 64 位版本会更大,但情况并非总是如此,因为 64 位处理器也进行了大量优化,使某些类型的代码使用更简单的二进制/汇编代码运行。)
您认为这些组件是随 Office 一起安装的,这种假设是错误的。ADO 是“Microsoft 数据访问组件”(MDAC) 包的一部分,而 MDAC 包实际上是操作系统的一部分。因此,版本号 6.1 与 Windows 7 的 Windows 版本号(也是 6.1)相匹配。
您的 Microsoft Access 版本将您引导至该(x86)
文件夹的原因是它是 32 位版本的 Access,因此它只能使用 32 位组件。如果您拥有 64 位版本的 Access(与问题中的断言相反,它确实存在),您将只能查看非目录中的组件(x86)
。
(您能够通过运行 Windows 修复来解决原始问题,这意味着您的 Windows 安装存在问题,或者在安装 Windows 更新时可能出现损坏。但是,这与这两个文件夹的存在完全无关。)