在Oracle中支持的数据types,但不在Excel VBA中

我写了一个连接到Oracle的excel vba,并从表中检索随机的'n'logging。 查询是在Oracle工作,但是当我执行vba,我得到一个错误消息“数据types不支持。运行时错误-2147467259(80004005)”

然后在我的vba代码中,我删除了数据types= Timestamp的列。 vba工作并检索logging。

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

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

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

下面的查询工作,因为我查询数据types字符的列名称。

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

我正在使用ADO 2.8,以下是我的连接string

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

谢谢,Dhanabalan

用于Oracle的Microsoft OLE DB提供程序已被弃用多年,它不支持Oracle数据typesTIMESTAMP 。 据我记忆,在Oracle 8i停止开发。

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

连接string然后必须是这样的:

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

您也可以尝试ODBC驱动程序。 情况是类似的,Mircosoft驱动程序已被弃用很久以前,你必须使用Oracle驱动程序。

连接string与此类似:

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