我在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”捕获。
我的错误处理代码有什么问题,或者我是否需要找到另一种方法来捕获此错误?
感谢您的帮助。欢迎任何建议。
答案 0 :(得分:6)
不确定是不是这样,但在VBE窗口中确保工具...选项...常规...错误陷印选项设置为“中断未处理的错误”。如果将其设置为“Break on All Errors”,则可能会绕过您的处理程序。
答案 1 :(得分:0)
尝试使用以下内容,在此处工作:
With conn
.ConnectionTimeout = 2
.CursorLocation = adUseClient
.ConnectionString = connectionString
.Open
.CommandTimeout = 0
End With