Обработка ошибок VBA при подключении ADODB. Открыто - PullRequest
4 голосов
/ 22 марта 2011

У меня есть соединение ADODB в VBA для подключения к базе данных SQLServer.Я хочу отловить ошибку, которая возникает при вызове connection.Open, и данная база данных недоступна.

Мой код выглядит так:

Public Function Connect() As Boolean

On Error GoTo DBError

    Dim dbServer As String
    Dim dbName As String
    Dim dbUser As String
    Dim dbPwd As String

    dbServer = DatabaseSettings.dbServer
    dbName = DatabaseSettings.dbName
    dbUser = DatabaseSettings.dbUser
    dbPwd = DatabaseSettings.dbPwd

    Dim connectionString As String
    connectionString = "Server=" & dbServer & ";Database=" & dbName & ";User Id=" & dbUser & ";Password=" & dbPwd

    Set conn = New ADODB.Connection
    conn.Provider = "sqloledb"
    With conn
        .ConnectionTimeout = 2
        .CursorLocation = adUseClient
        .Open connectionString
        .CommandTimeout = 0
    End With

Connect = True
Exit Function

DBError:
    Connect = False
End Function

Моя проблема в том, что когда я пытаюсьчтобы запустить этот код с неправильной строкой соединения, возникает ошибка, которая отображается в MsgBox и не обнаруживается «При ошибке GoTo DBError».

Что-то не так в моем коде обработки ошибок или мне нужно найти другой способ отловить эту ошибку?

Спасибо за вашу помощь.Любые предложения приветствуются.

Ответы [ 2 ]

6 голосов
/ 22 марта 2011

Не уверен, что это так, но в окне VBE убедитесь, что для параметра Инструменты ... Параметры ... Общие ... Перехват ошибок установлено значение «Разрыв необработанных ошибок». Если он установлен на «Break on All Errors», это может обойти ваши обработчики.

0 голосов
/ 22 марта 2011

Попробуйте использовать ниже, здесь работает:

With conn
    .ConnectionTimeout = 2
    .CursorLocation = adUseClient
    .ConnectionString = connectionString
    .Open 
    .CommandTimeout = 0
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...