从 Excel 到 Oracle 问题的 OLEDB 连接
OLEDB Connection from Excel to Oracle Issue
各位,
一个 VBA 问题在过去两天一直困扰着我。我在 Excel 中有一个基于宏的模型,它具有通过 OLEDB 从 Oracle 购买到电子表格的数据集。为了简单地说明问题,我在模型中创建了两个函数。一个使用 ODBC("odbc"),另一个使用 OLEDB("OraOLEDB")。该代码上周运行良好,并且没有更改。
现在,但是我收到一条错误消息,指出 "Run-Time Error '424': Object Required when I execute the line "conn.Open strCon" in sub "OraOLEDB"。无法与数据库建立连接!所以当我试图用那行代码建立与数据库的连接,它失败了。有趣的是,通过 ODBC,可以建立连接。sub "odbc" 中的行 "conn.Open strCon" 执行成功,我是能够与数据库建立连接。
我没有更改 Excel 模型中的任何内容,但我最近确实有一堆 windows 更新。我不知道那是否破坏了任何东西。我想可能有。我不想使用 ODBC 连接的原因是它慢得多。使用 OLEDB,我的速度提高了 运行 倍 10 倍。如果你能帮忙,请告诉我。
Sub odbc()
Dim conn As Object
Dim strCon As String
strCon = "Driver={Microsoft ODBC for Oracle};
CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=xxx)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=xxx)));
uid=xxx;pwd=xxx;"
Set conn = CreateObject("ADODB.Connection")
conn.Open strCon
End Sub
Sub OraOLEDB()
Dim conn As Object
Dim strCon As String
strCon = "Provider=OraOLEDB.Oracle;
Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)
(HOST = xxx)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = xxx)));
User Id=xxx;Password=xxx"
Set conn = CreateObject("ADODB.Connection")
conn.Open strCon
我看到 OLEDB 连接的主机是 modn-ast-fdb1。 ... 而对于 ODBC 连接,您有 modn-ast-tdb1。 ...宿主不应该是一样的吗?
这意味着 Set conn = CreateObject("ADODB.Connection")
returns 什么都没有。检查 ADODB.dll 注册。或者你可以使用
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
您将在编辑脚本时看到 ADODB 是否可用,而不是等待运行时错误。
各位,
一个 VBA 问题在过去两天一直困扰着我。我在 Excel 中有一个基于宏的模型,它具有通过 OLEDB 从 Oracle 购买到电子表格的数据集。为了简单地说明问题,我在模型中创建了两个函数。一个使用 ODBC("odbc"),另一个使用 OLEDB("OraOLEDB")。该代码上周运行良好,并且没有更改。
现在,但是我收到一条错误消息,指出 "Run-Time Error '424': Object Required when I execute the line "conn.Open strCon" in sub "OraOLEDB"。无法与数据库建立连接!所以当我试图用那行代码建立与数据库的连接,它失败了。有趣的是,通过 ODBC,可以建立连接。sub "odbc" 中的行 "conn.Open strCon" 执行成功,我是能够与数据库建立连接。
我没有更改 Excel 模型中的任何内容,但我最近确实有一堆 windows 更新。我不知道那是否破坏了任何东西。我想可能有。我不想使用 ODBC 连接的原因是它慢得多。使用 OLEDB,我的速度提高了 运行 倍 10 倍。如果你能帮忙,请告诉我。
Sub odbc()
Dim conn As Object
Dim strCon As String
strCon = "Driver={Microsoft ODBC for Oracle};
CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST=xxx)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=xxx)));
uid=xxx;pwd=xxx;"
Set conn = CreateObject("ADODB.Connection")
conn.Open strCon
End Sub
Sub OraOLEDB()
Dim conn As Object
Dim strCon As String
strCon = "Provider=OraOLEDB.Oracle;
Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)
(HOST = xxx)(PORT = 1521))
(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = xxx)));
User Id=xxx;Password=xxx"
Set conn = CreateObject("ADODB.Connection")
conn.Open strCon
我看到 OLEDB 连接的主机是 modn-ast-fdb1。 ... 而对于 ODBC 连接,您有 modn-ast-tdb1。 ...宿主不应该是一样的吗?
这意味着 Set conn = CreateObject("ADODB.Connection")
returns 什么都没有。检查 ADODB.dll 注册。或者你可以使用
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
您将在编辑脚本时看到 ADODB 是否可用,而不是等待运行时错误。