Oracle支持的数据类型,但不支持Excel VBA

时间:2017-01-11 13:42:36

标签: excel oracle vba excel-vba

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

然后在我的vba代码中,我删除了数据类型为= Timestamp的列。 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

谢谢, 丹那巴南

1 个答案:

答案 0 :(得分: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;