连接VBA到Oracle时连接错误关闭

时间:2011-07-25 15:22:29

标签: oracle vba oracle10g

从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

1 个答案:

答案 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