Access 2007:打开ADO连接时类型不匹配

Hel*_*ion 5 ms-access ms-access-2007

我有一个Access ADP文件.我将后端数据库升级为指向SQL 2005服务器而不是SQL 2000服务器,并相应地更改了数据库连接信息.该文件在我自己的系统上运行完全正常,运行Windows 7(64位)和Access 2007.在运行Windows XP和Access 2007的目标系统上,数据库的主要功能几乎立即崩溃,出现"运行时错误" '13':类型不匹配"错误.

起初我以为我遇到的问题与问题中描述的问题相同,其中连接的默认定义是DAO,但数据库使用的是ADO对象.但是,在查看代码时,连接的每个实例都专门声明为"ADODB.Connection".

导致错误的问题是:

Public Sub Tools()
dim db as ADODB.Connection
dim sql as String

sql = "Select SSPatch from tblPlastech"
set db = CurrentProject.Connection           ' THIS LINE CAUSES THE TYPE MISMATCH ERROR
dim rst as ADODB.RecordSet
set rst = New ADODB.RecordSet

rst.open sql, db, adOpenKeyset, adLockOptimistic
gsSSpath = rst!sspath
QUOTES = Chr(34)
rst.Close
set rst = Nothing
db.Close
set db = Nothing

End Sub
Run Code Online (Sandbox Code Playgroud)

任何人都可以对这个问题有所了解吗?现在我很难过.

Hel*_*ion 6

以下是我最终发现的相关内容:

在64位Windows 7 Pro上,Microsoft MDAC组件检查器工具告诉我,我正在运行MDAC版本"UNKNOWN",文件版本为6.1.7600.16385或6.1.7601.17514(奇怪的巧合与之非常接近) Windows版本号).另一方面,在32位Windows XP上,Component Checker说我正在运行版本"MDAC 2.8 SP1 ON WINDOWS XP SP3",文件版本为2.81.1132.0或2.81.3012.0,看起来像是正确的MDAC版本号.

如果我在XP上更改"损坏"代码并因此强制重新编译,则产生运行时错误的完全相同的代码(上面提到的类型不匹配13错误或运行时错误430)将开始工作(当我把它复制到其他XP盒子或我的Windows 7盒子时继续工作).如果我更改了Windows 7框中的代码并将其重新分发到XP框,它会中断,尽管引用列表中的每个引用都具有相同的名称,并指向相同磁盘位置中的相同文件.

编辑:显然这个版本编号是由于Windows Vista/7使用"WDAC"而不是"MDAC",并且在低级操作系统上运行时在Win7 SP1上编译的代码的特定问题是一个已知问题,在support.microsoft上引用.com kb文章2517589以及technet上的这篇文章.切换到后期绑定,在下层系统上安装KB修复程序,或在"反向兼容"版本的ADO中进行链接是建议的修复.

编辑2:此时我已经解决的问题是继续在我的Win7SP1盒子上进行所有开发工作(使用早期绑定),然后在将其部署到我的用户之前在WinXP盒上重新编译整个应用程序.