【问题标题】:Datatype supported in Oracle but not in Excel VBAOracle 支持但 Excel VBA 不支持的数据类型
【发布时间】:2023-03-31 23:30:01
【问题描述】:

我编写了一个连接到 Oracle 并从表中检索随机“n”条记录的 excel vba。该查询在 Oracle 中运行,但是当我执行 vba 时,我收到一条错误消息“不支持数据类型。运行时错误 -2147467259 (80004005)”

然后在我的 vba 代码中,我删除了数据类型 = 时间戳的列。 vba 工作并检索记录。

我可以在我的 vba 查询中使用转换,但表名是动态的,并且每个表的列数不同,因此我只能使用“Select * from”。你能帮我解决这个问题吗?

以下是使用的查询。由于该表有时间戳列,因此不起作用

    sqlText = " SELECT * FROM " & tablename & " WHERE rownum < " & countx   

以下查询有效,因为我正在查询具有数据类型字符的列名。

    sqlText = " SELECT name FROM employee " WHERE rownum < " & countx        

我使用的是 ADO 2.8,下面是我的连接字符串

conn.Open "PROVIDER=MSDAORA.Oracle;DATA SOURCE=" & Server & ";" & "USER ID=" & UID & ";PASSWORD=" & PWD

谢谢, 达纳巴兰

【问题讨论】:

  • 也许您可以添加您的查询?
  • 您是否检查过是否在 VBA 中启用了 Microsoft ActiveX 库引用?我不确定需要哪个版本的库,但已经看到这些是使用 Oracle/VBA 的问题。
  • 感谢您的回复。以下是使用的查询: sqlText = " SELECT * FROM " & tablename & " WHERE rownum
  • 您可以通过编辑将查询添加到问题本身。这会很有帮助。
  • 尝试Provider=OraOLEDB.Oracle 而不是PROVIDER=MSDAORA。 Microsoft 提供商多年来一直是deprecated。您可以从这里下载“Oracle Provider for OLE DB”:Oracle Data Access Components (ODAC) for Windows Downloads

标签: oracle vba excel


【解决方案1】:

Microsoft OLE DB Provider for Oracle 多年来一直是deprecated,它不支持Oracle 数据类型TIMESTAMP。据我所知,开发停止于 Oracle 8i。

您必须使用 Oracle Provider for OLE DB,如果没有安装,您可以从这里下载:Oracle Data Access Components (ODAC) for Windows Downloads

连接字符串必须是这样的:

"PROVIDER=OraOLEDB.Oracle;DATA SOURCE=" & Server & ";" & "USER ID=" & UID & ";PASSWORD=" & PWD

您也可以尝试 ODBC 驱动程序。情况类似,Mircosoft 驱动早就deprecated 了,必须使用Oracle 驱动。

连接字符串类似于:

"Driver={Oracle in OraClient11g_home1};Uid=" & UID & ";Pwd=" & PWD & ";DBQ=" & Server;

【讨论】:

    猜你喜欢
    • 2013-07-31
    • 2017-08-22
    • 1970-01-01
    • 2017-07-12
    • 2019-03-23
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多