【问题标题】:Open method for AdoDB.Connection object is not supported in Access 2010Access 2010 不支持 AdoDB.Connection 对象的打开方法
【发布时间】:2015-10-05 22:40:31
【问题描述】:

目前我正在开发一个使用 ODBCDirect 的 Access 数据库应用程序。升级到 Access 2010 后,我收到一条错误消息,告诉我不再支持 ODBCDirect,并且每次运行应用程序时,我都必须在相应的源代码部分中将 DAO 更改为 ADO。 我发现此错误消息的来源是负责使用 ODBCDirect 的数据库连接的源代码。

我遵循了有关 ADODB.Connection 对象及其打开的教程。我使用 ADODB.Connection 对象将此代码更改为以下简单代码。

现在我收到新的错误消息“这种类型的对象不支持(-2147467259) 操作”

我发现我使用 ADODB.Connection 对象的 Open 函数的地方导致了新的错误消息:

Global conWork As ADODB.Connection
...
Set conWork = New ADODB.Connection
...
conWork.ConnectionString = "ODBC;DRIVER={SQL Server};SERVER=someServer.x.y.z;Provider=Microsoft.ACE.OLEDB.12.0;UserID=user;Password=pw;Data Source=someServer.x.y.z; Trusted_Connection=yes;"
...

conWork.Open  //...causes the error msg "OPERATION IS NOT SUPPORTED FOR THIS TYPE OF OBJECT"

在 vba 编辑器中,我在引用设置中选择了 Microsoft ADO 2.8 库和 Microsoft ADO 2.8 RecordSet 库。

【问题讨论】:

    标签: ms-access vba connection ms-access-2010 adodb


    【解决方案1】:

    我不确定您的尝试失败的原因,但有几个问题在我看来很可疑。

    1. 不要在 ADO 连接字符串中包含 ODBC;。包含该部分会在我的测试中触发运行时错误。
    2. 我认为您不应在连接字符串中同时包含 DRIVER={SQL Server}Provider=Microsoft.ACE.OLEDB.12.0
    3. 同时包含 UserID=user;Password=pwTrusted_Connection=yes 似乎是错误的。选择其中之一,而不是两者兼而有之。
    4. 在设置其ConnectionString 并调用Open 之前,您必须先执行Set conWork = New ADODB.Connection。我不知道您的完整代码是否可以做到这一点;它应该。
    5. 我认为您不需要记录集库引用,但不知道是否包含它会导致问题。

    也许您最好从已知工作的 ADO 连接代码开始。此代码在 Access 2010 中使用 Microsoft ActiveX Data Objects 2.8 库 参考并成功连接到我的本地 SQL Server。

    Dim conWork As ADODB.Connection
    Dim strConnect As String
    strConnect = "DRIVER={SQL Server};SERVER=HP64\SQLEXPRESS;Trusted_Connection=Yes;DATABASE=testbed"
    Set conWork = New ADODB.Connection
    conWork.ConnectionString = strConnect
    conWork.Open
    

    您可以在ConnectionStrings.com 找到有关 SQL Server 连接字符串的更多信息。

    【讨论】:

    • 感谢您的回复!不幸的是,我忘了在我的问题中写“Set conWork = New ADODB.Connection”。我现在更新了。
    • 我将 connectionString 更改为:conWork.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};SERVER=server.xyz;Provider=Microsoft.ACE.OLEDB.12.0;UserID=某人;密码=密码;数据源=server.xyz;"现在我收到错误消息“找不到可安装的 ISAM”
    • 您正在尝试连接到数据库。那个数据库是 SQL Server 还是 MS Access?我很困惑。
    • 感谢您的帮助。现在我正在使用 connectionString "Driver={Microsoft Access Driver (*.mdb)};Dbq=\\folder1\folder2\User1\Database.mdb; Uid=Admin;Pwd=password;" .我现在没有收到任何连接错误,但是在通过 ADODB.Command 对象访问 storedProcedures(存储在服务器上)时遇到问题。我已经在这里发布了相应的问题-> stackoverflow.com/questions/31540879/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多