在Oracle数据库上执行sql查询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才能使其工作。我用的是名字。或者设置路径。我不确定我是否配置正确,但它的工作原理,所以我猜没有问题与vba连接,或者是吗?(当然,变量被设置为实值,而不是"XXX")

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

存在一个同样错误的问题,但是没有解决:

执行vba脚本时未指定的运行时错误

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

尽管我问这个问题已经有一段时间了,但在这里,它仍然没有得到解决,所以我将自己回答。

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

最新更新