Не знаю, возможно ли это, но я решил спросить.
Существует ли эквивалент On Error GoTo Next
для соединений ADODB в Excel VBA?
У меня есть хранимая процедура, которую я вызываю с использованием объекта ADODB.Command. Проблема в том, что если какой-либо один оператор в этой хранимой процедуре выдает ошибку, весь процесс завершается. Да, это уместно в некоторых случаях, но в моем случае это не имеет большого значения, я просто хотел бы продолжить выполнение остальной части хранимой процедуры в любом случае.
On Error GoTo 0
показывает сообщение об ошибке SQL и предоставляет опции «Конец» или «Отладка».
On Error Resume Next
пропускает сообщение об ошибке SQL, но молча отменяет команду SQL и перемещает следующий оператор VBA.
Есть идеи?
РЕДАКТИРОВАТЬ: У меня был запрос на мой код. Я не уверен, что это вам сильно поможет, но здесь:
On Error GoTo 0
ServerConnection.Open "Provider=MSDASQL.1;Persist Security Info=True;Extended Properties="DRIVER=SQL Native Client;Trusted_Connection=Yes;SERVER=DBServer;DATABASE=Database";"
Dim SqlCommand As ADODB.Command
Set SqlCommand = New ADODB.Command
With SqlCommand
.ActiveConnection = ServerConnection
.CommandText = "EXEC CacheTables @CacheTableType1=True"
.CommandType = adCmdText
.Execute
End With
ServerConnection.Close
Set SqlCommand = Nothing
Set ServerConnection = Nothing
К сожалению, я на самом деле не контролирую хранимую процедуру, но причина, по которой она выдает ошибки, заключается в том, что человек, который ее написал, использовал операторы RAISERROR, чтобы сообщить пользователю, где находится выполнение. Это нормально в SQL Server, который понимает флаг «Приоритет» и, следовательно, продолжает выполняться, но VBA, похоже, считает, что все ошибки имеют одинаковую важность.