找不到提供者。使用ADO驱动程序代替DAO

时间:2019-05-27 07:09:58

标签: excel vba odbc ado dao

我在Windows 10计算机上安装了Oracle ODBC Instant Client 12,以便将Excel宏连接到Oracle数据库。我的应用程序能够通过使用DAO或ADO驱动程序连接到Oracle数据库。与DAO的数据库连接工作正常,但是当我尝试使用ADO驱动程序时,出现以下错误:“找不到提供程序。它可能未正确安装。”

如何在Excel宏中设置ADO连接:

Set Connection = VBA.CreateObject("ADODB.Connection")
Connection.ConnectionString = IDatenbank_BuildConnectionString(ODBCConnection)
Call Connection.Open


IDatenbank_BuildConnectionString = "ODBC" & _
                                    ";DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password

关于如何使用ADO驱动程序的任何建议,并避免出现错误“找不到提供程序。它可能未正确安装。”

Excel 2016在用作服务器的Windows 10计算机上以32位运行。 Microsoft ODBC作为Excel实例安装在32位上。

我到目前为止所做的:

•已安装和Oracle Client for ODBC 32位; •已安装32位Access数据库引擎; •Microsoft数据访问组件(MDAC)

在客户端计算机中,它们可以运行togheter,但是使用服务器时似乎不正确。

此致

1 个答案:

答案 0 :(得分:0)

如果使用标准Oracle ODBC,则不需要在连接字符串前面使用“ ODBC”。

在您的代码中,它包含“ ODBC”:

'ODBC;DSN=xxx;Uid=yyy;Pwd=zzz
IDatenbank_BuildConnectionString = "ODBC" & _
                                    ";DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password

'It should be "DSN=xxx;Uid=yyy;Pwd=zzz" only without "ODBC" in front
IDatenbank_BuildConnectionString = "DSN=" & ODBCConnection.Name & _
                                    ";Uid=" & ODBCConnection.User & _
                                    ";Pwd=" & ODBCConnection.Password