oracle - 使用 ODBC 连接从 Excel VBA 宏更新 Oracle 表

标签 oracle excel vba odbc ado

我在 Excel 2010 中有一张表格,它从 Oracle 数据库中提取 QueryTables 中的数据,通过 ODBC DSN 连接。

我需要从电子表格中获取数据并使用它来更新同一 Oracle 数据库中的表。我无法从 QueryTable 进行更新,但这是我能够使用 ODBC 的唯一连接方法。

我尝试建立 ADODB 连接,但我得到了一个

'Run-time error '-2147467259 (80004005'):

Automation error
Unspecified error

这是我使用的代码:
Sub Upload_Click()
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection

    With cn
        .Provider = "MSDASQL"
        .ConnectionString = "DSN=xcognosD;"
        .Open
    End With

    cn.Close
End Sub

补充说明,我在 Windows 7 上使用 64 位 odbc 驱动程序,连接到 Oracle 11 数据库。

最佳答案

提供程序“MSDASQL”是 Microsoft's OLE DB Provider for ODBC Drivers .它很旧,现在已被弃用。它实际上只适用于没有 OLE DB 提供程序的旧数据库。它也是仅 32 位的,因此它不适用于 64 位提供程序(例如您尝试使用的提供程序)。您最好尝试使用 OLE DB 驱动程序。

MS OLEDB provider for Oracle是“MSDAORA”(应该预先安装在您的机器上)和 Oracle's own OLEDB provider是“OraOLEDB.Oracle”。最好建议您下载最新的 Oracle 提供的提供程序,因为 MSDAORA 也已被弃用。

您需要下载并安装 Oracle 提供程序(如果您还没有)

.Provider = "OraOLEDB.Oracle"

您还需要设置 .ConnectionString .看看http://www.connectionstrings.com/oracle-provider-for-ole-db-oraoledb/举一些例子。

关于oracle - 使用 ODBC 连接从 Excel VBA 宏更新 Oracle 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835640/

相关文章:

sql - 使用PL/SQL或SQL中的循环杀死oracle session

c# - Linq-to-Entity 在插入 Oracle 时取回主键

检查表单控件类型时 VBA 运行时错误 1004 “Application-defined or Object-defined error”

regex - 使用正则表达式检查 Word 宏中的数值

vba - 根据单元格值隐藏行

excel - 如何在组合框中找到所选选项的索引?

sql - 在左连接中使用 Oracle rank()

arrays - 如何将数字数组传递给 Oracle 存储过程?

excel - 打开由管道字符 "|"或非常见分隔符分隔的 csv 文件

vba - 捕获导致错误的变量/对象名称