【问题标题】:VBA connect to protected database, error handlingVBA 连接到受保护的数据库,错误处理
【发布时间】:2013-09-22 10:11:41
【问题描述】:

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

只要有正确的密码和数据库文件的路径,一切都会正常工作。

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

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

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 是我的两个文本区域,就像我说的一切都在我的消息框提示之前崩溃。

【问题讨论】:

    标签: ms-access error-handling vba runtime-error


    【解决方案1】:

    我认为您可能需要做的就是添加一个错误处理程序。我删除了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
    

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2010-12-06
      相关资源
      最近更新 更多