Microsoft ODBC for Oracle 在 excel vba 中不起作用
Posted
技术标签:
【中文标题】Microsoft ODBC for Oracle 在 excel vba 中不起作用【英文标题】:Microsoft ODBC for Oracle not working in excel vba 【发布时间】:2014-08-16 09:01:00 【问题描述】:我正在尝试使用 excel vba 2010 中的 odbc 方法连接到 oracle 数据库。我将采用这种方法,因为我想建立一个无 tns 的连接。
我开发了以下代码。
Private Sub cb_getExecutionPlanName_Click()
Dim conn As ADODB.Connection
Dim connString As String
Dim rsRecords As ADODB.Recordset
connString = "Driver=Microsoft ODBC for Oracle; CONNECTSTRING=(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP)(HOST=******)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=**))); uid=***; pwd=***;"
Set conn = New ADODB.Connection
Set rsRecords = New ADODB.Recordset
conn.Open connString // <<< Error thrown here
rsRecords.Open "select name as name from w_etl_defn where inactive_flg = 'N';", conn
i = 0
With Me.ListBox1
.Clear
Do
.AddItem
.List(i, 0) = rsRecords!Name
i = i + 1
rsRecords.MoveNext
Loop Until rsRecords.EOF
End With
rsRecords.Close
Set rsRecords = Nothing
conn.Close
Set conn = Nothing
End Sub
但是,我在打开连接时遇到自动化错误。错误详情如下:
运行时错误'-2147467259(80004005);'
Automation Error Unspecified Error
为什么突出显示的行会抛出此错误?
【问题讨论】:
您的问题是什么?不清楚您在这里问什么,如果您可以缩小引发错误的代码行,我们也许可以帮助您回答Why does this line of code throw an automation error?
形式
conn.Open connString
conn.Open connString 语句引发自动化错误。问题来了
你安装了Oracle客户端吗?您是否测试过 Oracle 工具和 ODBC 的连接?
您安装了哪个 Oracle 客户端? 32位还是64位? Excel 是 32 位应用程序,因此 Oracle 客户端也必须是 32 位。
【参考方案1】:
我知道您正在保护您的主机名、密码等。但是,您需要获取连接字符串并确保它可以使用
sqlplus myuser/mypassword@`(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=******)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=**)))'
如果这失败了,那么你的 sqlnet 字符串是错误的,或者你的密码和用户是错误的。您可以只依赖 tns_names.ora 文件或已安装客户端的 network/admin 目录中的其他文件,将字符串简化为 @myservice_or_sid。
@ElectricLlama 提出了一个很好的观点。如果您使用 MS Client for Oracle verses Oracle ODBC 驱动程序,那么您将遇到其他 Oracle 数据库对象的伤害。
【讨论】:
我的印象是,如果没有安装 Oracle 客户端,MS 客户端甚至无法工作。connString = "Driver=Microsoft ODBC for Oracle;
我看到的问题是MS客户端也不知道如何处理Oracle的重载函数和过程名称使用。
我在哪里使用这个 sqlplus... 代码?在 Excel VBA 执行此操作之前,我是否需要安装参考库?
@Ammar Naseer 有几种方法可以连接到 Oracle 数据库。 sqlplus 在您的工作站上安装了 Oracle“客户端”。如果 Excel VBA 是您首选的数据库访问方法,您尝试使用 sqlplus 所做的只是确保您可以连接到数据库。这些想法就像一个“Hello World”程序。 Hello World 程序用于确保您可以编译您编写的简单程序。由于 sqlplus 是命令行工具,它经常用于自动化脚本中,无需 GUI 即可处理数据。以上是关于Microsoft ODBC for Oracle 在 excel vba 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
适用于 Oracle 和 JDBC 的 Microsoft ODBC
Microsoft OLEDB Provider for Oracle 找不到,怎么解决
使用 Microsoft Access ODBC 链接到 Oracle 控制哪些列成为主键
Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:用户“SA”登录失败
SQLSTATE[08001]:[Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序:错误代码 0x2746
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名 'user1' 无效