我正在尝试使用VBA / Excel在数据库服务器(Oracle 10g)上运行查询,并在excel表中显示结果。我创建了ODBC连接(只读)并测试了连接。如果我在excel中导入数据作为数据源,我工作正常(我也可以通过查询过滤)但是我的VBA代码给了我错误3001
Sub Test()
Dim cnn As ADODB.Connection
Dim canConnect As Boolean
Dim rs As Recordset
Dim strSQL As String
Set cnn = New ADODB.Connection
cnn.Open "DSN=blah;Uid=blah;Pwd=blah"
strSQL = "select job_start_dttm, job_end_dttm from c_job"
Set rs = cnn.openrecordset(strSQL)
ActiveCell = rs(0)
End Sub
我得到错误3001 - Arguemnts属于怪物类型,超出可接受的范围,或者彼此相互混淆
查询本身在SQL开发人员中运行良好。感谢
编辑:错误在“设置rs = cnn.openrecordset(strSQL)”行
答案 0 :(得分:1)
尝试使用ADODB前缀限定rs的类型名称,以确保它未被定义为内置的Access Recordset对象类型。
Dim rs As ADODB.Recordset
修改强>
您还需要使用ADO .Execute命令而不是DAO .OpenRecordset:
Set rs = cnn.Execute("...")
答案 1 :(得分:1)
尝试:
Sub Test()
Dim cnn As New ADODB.Connection
Dim canConnect As Boolean
Dim rs As New ADODB.Recordset
Dim strSQL As String
cnn.Open "DSN=blah;Uid=blah;Pwd=blah"
strSQL = "select job_start_dttm, job_end_dttm from c_job"
rs.Open strSQL, cnn
ActiveCell = rs(0)
End Sub
你似乎把你的ADODB混合了一点DAO。你可以使用Execute,但上面应该适合。