我最終發現了一些可以通過搜索「抑制ODBC連接失敗警告」的方法。
從http://bytes.com/topic/access/answers/201502-how-suppress-odbc-connection-dialog
使用ADO做的方式,允許VBA錯誤捕獲系統拋出任何彈出窗口,在您之前發現錯誤的數據庫連接的某些代碼特雷弗最佳的禮貌。
Function CanOpenSQLDbLB(pstrServer As String, pstrDb As String, pstrUser
As String, pstrPassword As String, Optional pfReportError As Boolean =
True) As Boolean
On Error GoTo CanOpenSQLDbLB_Err
Dim objConn As Object
Dim strConn As String
Dim strError As String, lngErr As Long
Const cstrSQLErr = "[Microsoft][ODBC SQL Server Driver][SQL Server]"
Set objConn = CreateObject("ADODB.Connection")
strConn = strConn & "DRIVER=SQL Server"
strConn = strConn & ";SERVER=" & pstrServer
strConn = strConn & ";APP=" & Application.Name
strConn = strConn & ";WSID=AWorkstation"
strConn = strConn & ";DATABASE=" & pstrDb
objConn.Open strConn, pstrUser, pstrPassword
CanOpenSQLDbLB = True
CanOpenSQLDbLB_Exit:
On Error Resume Next
objConn.Close
Set objConn = Nothing
Exit Function
CanOpenSQLDbLB_Err:
lngErr = Err.Number
strError = Err.Description
If InStr(1, strError, cstrSQLErr) Then
strError = "Error reported by server" & vbCr & vbCr &
Replace(strError, cstrSQLErr, "")
End If
Select Case lngErr
Case Else
If pfReportError Then
MsgBox strError, 16, "Error #" & Err & " Attempting to
open server database"
End If
End Select
Resume CanOpenSQLDbLB_Exit
End Function
來源
2014-10-16 06:02:32
LMF
你重新啓動SQL Server數據庫連接的安全性,是它當前正在運行在嘗試連接之前? – Juniar 2014-10-07 05:52:10
不,我知道它沒有運行 - 這就是我想要在代碼中捕獲的。這不是'確保SQL服務器正在運行'的問題,而是'如果SQL服務器沒有運行,我該如何優雅地從中恢復呢?' – LMF 2014-10-07 22:27:03
錯誤應該來自連接字符串,因爲服務器沒有運行。我想你把它放在一個try和catch塊。 – Juniar 2014-10-08 00:55:05