Ошибка при закрытии соединения при подключении VBA к Oracle - PullRequest
0 голосов
/ 25 июля 2011

Я сталкиваюсь с ошибкой при подключении к базе данных Oracle из кода VBA в электронной таблице Excel.Запускаемый запрос работает нормально, но при попытке закрыть соединение я получаю следующую ошибку:

Ошибка выполнения 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 Ответ

1 голос
/ 25 июля 2011

Ничто не мешает продолжению выполнения в вашем обработчике ошибок после строки cn.Close, поэтому возможно, что ваша ошибка исходит от самого обработчика ошибок (потому что обработчик пытается сослаться на несуществующий объект Err).

...     
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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...