Обработка ошибок уровня данных VBA - PullRequest
4 голосов
/ 02 февраля 2011

У меня есть несколько устаревших файлов Excel с множеством обращений к хранимым процедурам и подключениями к БД, которые все выполняются по старинке с наборами записей ...

, поскольку в VBA отсутствует концепция, похожая на try-catch-finallyВ .NET есть ли лучший способ применить немного более надежный уровень доступа к данным?Я хотел бы получить хороший пример того, как открыть соединение, выполнить хранимую процедуру, которая требует некоторых параметров, а затем в случае успеха или ошибки закрыть соединение и освободить ресурсы.

Ответы [ 2 ]

7 голосов
/ 02 февраля 2011

В VBA вы должны использовать блоки On Error: это грязно, но работает

On Error Goto ConnectionFail
' open connection
on Error GoTo 0
...
On Error GoTo QueryFail
' execute querys etc
on Error goto 0
...
Cleanup:
' close connection destroy objects etc
Exit Sub
ConnectionFail
On Error GoTo 0
' handle failure
GoTo Cleanup
QueryFail
On Error GoTo 0
' handle failure
GoTo Cleanup
End Sub
4 голосов
/ 02 февраля 2011

Сейчас я на самом деле использую другой подход, я создал управляемый слой данных .NET и экспортировал его как класс COM, следуя приведенным ниже инструкциям: Вызов .NET из VBA таким образом, я должен развернутьи зарегистрировать COM-сборку вместе с файлом Excel, и я признаю, что это немного болезненно, но, по крайней мере, я могу правильно обрабатывать доступ к данным и использовать C #, ADO.NET и т. д. ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...