从Excel电子表格中的VBA代码连接到Oracle DB时遇到错误。我运行的查询工作正常,但当我尝试关闭连接时,我收到以下错误:
运行时错误3265:在与请求的名称或序号对应的集合中找不到项目。
我的代码副本如下。错误发生在“cn.close”行上。任何帮助将不胜感激!
Sub GetData()
Dim cn As New ADODB.Connection
comm As New ADODB.Command
rs As New ADODB.Recordset
On Error GoTo errhandler:
cn.ConnectionString = "DSN=XXX;Uid=XXX;Password=XXX;"
cn.Open
comm.CommandType = adCmdText
comm.CommandText = "Select * from XXX where rownum < 10;"
Set comm.ActiveConnection = cn
rs.ActiveConnection = cn
rs.Open comm
Sheets("Sheet1").Range("a1").Offset(1, 0).CopyFromRecordset rs 'copy the records
rs.Close
cn.Close
errhandler:
Debug.Print (Err.Description)
Debug.Print "Error# " & cn.Errors(0).NativeError & ": " & cn.Errors(0).Description
Stop
End Sub
答案 0 :(得分:1)
在cn.Close行之后没有什么可以阻止执行继续进入你的错误处理程序,所以你的错误可能来自错误处理程序本身(因为处理程序试图引用一个不存在的Err对象)。 / p>
...
rs.Close
cn.Close
Exit Sub ' don't run into your error handler
errhandler:
Debug.Print (Err.Description)
Debug.Print "Error# " & cn.Errors(0).NativeError & _
": " & cn.Errors(0).Description
'Stop 'delete this - not needed here
End Sub