ADODB Connection.Open上的VBA错误处理

时间:2011-03-22 10:10:04

标签: vba adodb

我在VBA中有一个连接到SQLServer数据库的ADODB连接。我想捕获在调用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

我的问题是,当我尝试使用不正确的connectionString运行此代码时,会引发错误并显示在MsgBox中,而不会被“On Error GoTo DBError”捕获。

我的错误处理代码有什么问题,或者我是否需要找到另一种方法来捕获此错误?

感谢您的帮助。欢迎任何建议。

2 个答案:

答案 0 :(得分:6)

不确定是不是这样,但在VBE窗口中确保工具...选项...常规...错误陷印选项设置为“中断未处理的错误”。如果将其设置为“Break on All Errors”,则可能会绕过您的处理程序。

答案 1 :(得分:0)

尝试使用以下内容,在此处工作:

With conn
    .ConnectionTimeout = 2
    .CursorLocation = adUseClient
    .ConnectionString = connectionString
    .Open 
    .CommandTimeout = 0
End With