在Oracle数据库上执行sql查询vba时出现未指定的错误

时间:2015-06-01 21:36:03

标签: excel oracle vba excel-vba

我想使用VBA将数据从Oracle数据库导入Excel。我已经尝试了在这里或官方手册中找到的几个选项,但它们似乎都不适合我 - 我总是得到同样未指定的运行时错误

rs.Open strSQL1, con

Set rs = con.Execute(strSQL1)

取决于我明显使用这两种方法中的哪一种。这是完整的代码:

Sub data_distribution()

'Setting up the database connection
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL1, strInput, strCon As String

Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

strCon = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=XXX)(PORT=XXX))" & _
"(CONNECT_DATA=(SERVICE_NAME=XXX))); uid=XXX; pwd=XXX;"

'---  Open the above connection string.
con.ConnectionString = strCon
con.Open
'con.Open strCon

'---  Now connection is open and you can use queries to execute them.
'---  It will be open till you close the connection

'Definition of parameter
strInput = InputBox("Insert car_id")

strSQL1 = "select * from car where car_id = " & strInput & ""

'Executing the query
'rs.activeconnection = con
'rs.Open strSQL1, con

Set rs = con.Execute(strSQL1)
rs.Open strSQL1, con

Worksheets("Data").Range("A2").CopyFromRecordset rs

'Closing connection
rs.Close
con.Close
Set con = Nothing
Set rs = Nothing

我当时认为这可能是连接数据库的问题,但如果我导入/查询数据手册,它就可以正常工作。例如,使用本手册

http://blog.mclaughlinsoftware.com/microsoft-excel/how-to-query-oracle-from-excel-2007/

我必须从Oracle站点下载并配置适用于Windows的ODAC才能使其正常运行。我使用tsnames.ora来设置路径。我不确定我是否配置正确但是它可以工作所以我猜vba中的连接没有问题,或者是吗? (当然,变量设置为实际值,而不是“XXX”)

查询本身是正确的,并从数据库返回有效结果。使用ADOBD所必需的库也是链接的。 (Microsoft ActiveX Data Objects 2.0库)

存在同一错误的现有问题,但尚未解决:

Unspecified run time error while executing vba script

我猜它是特定的站点/接口(我使用Excel 2010,SQL开发人员)。

1 个答案:

答案 0 :(得分:1)

即使已经有一段时间我问了这个问题,但这里还没有解决,所以我会自己回答。

问题出现在car表中,其中一个属性是CLOB(CHARACTER LARGE OBJECT)类型,长度超过2000个字符。 Excel无法处理该类型,并且查询导致了未指定的错误。如果我列出了所有属性而不是这一个,那一切都很顺利。