【发布时间】: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