1

我正在做一个包含两个字段的表单,一个可以浏览数据库的路径,另一个可以浏览数据库密码。

当密码和数据库文件的路径正确时,一切正常。

如果我没有正确的密码或文件不是数据库,我的问题是错误停止程序。我无法在不崩溃的情况下测试连接。

我怎样才能测试路径和密码而不使整个事情崩溃。这里看看我到目前为止所做的事情(非常简单):

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim canConnect As Boolean

Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=" & Me.txt2   & ";   Data Source=" & Me.txt1 & ";"
Set rs = New ADODB.Recordset

If cn.State = adStateOpen Then
  canConnect = True
  cn.Close
End If

MsgBox canConnect

正如你所看到的 txt1 和 txt2 是我的两个文本区域,就像我说在我的消息框提示之前一切都崩溃了。

4

1 回答 1

2

我认为您可能需要做的就是添加一个错误处理程序。我消除了 ,ADODB.Recordset因为您只需要.Connection.

Public Sub test17()
    Dim cn As ADODB.Connection
    Dim canConnect As Boolean
    Dim strConnect As String
    Dim strMsg As String

On Error GoTo ErrorHandler

    canConnect = False ' make it explicit, but not really needed
    Set cn = New ADODB.Connection
    strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Jet OLEDB:Database Password=" & Me.txt2 & _
        ";Data Source=" & Me.txt1 & ";"
    Debug.Print strConnect
    cn.Open strConnect

    ' if we got to this point, there was no error ...
    ' which means the connection succeeded
    canConnect = True
    cn.Close

ExitHere:
    MsgBox canConnect
    Set cn = Nothing
    Exit Sub

ErrorHandler:
    strMsg = "Error " & Err.Number & " (" & Err.Description _
        & ") in procedure test17"
    'MsgBox strMsg or Debug.Print strMsg, if desired
    GoTo ExitHere
End Sub
于 2013-09-17T20:41:11.960 回答