2011-03-22 67 views
3

我在VBA中有一個用於連接到SQLServer數據庫的ADODB連接。我想捕獲連接時引發的錯誤.Open被調用並且給定的數據庫無法訪問。在ADODB連接上的VBA錯誤處理。打開

我的代碼如下所示:

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顯示,而不是由「對錯誤轉到抓DBError」。

在我的錯誤處理代碼中是否有錯誤,或者我需要找到另一種捕獲此錯誤的方法?

謝謝你的幫助。歡迎任何建議。

回答

5

不確定是否是這樣,但在VBE窗口中確保工具...選項...常規...錯誤陷印選項設置爲「斷開未處理的錯誤」。如果它被設置爲「突破所有錯誤」,這可能繞過你的處理程序。

+0

謝謝這個解決我的問題。你知道我是否可以強制用戶以某種方式使用此設置?否則,當我「釋放」我的應用程序時,我會遇到問題。也許檢查什麼設置設置?再次感謝你的幫助。 – PKeno 2011-03-24 07:01:00

+0

並不知道,但我想你會在這裏找到它:http://msdn.microsoft.com/en-us/library/aa221603(v=office.11​​).aspx – tpascale 2011-03-24 18:09:00

0

嘗試使用下面,在這裏工作:

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