** 想实现的功能:
程序使用的数据库必须符合一定的格式,也就是必须有必要的表和字段等等。在程序中,已经打开一个数据库,我想重新选择一个数据库,使用通用对话框 dlgChooseFile 选择。当数据库格式不正确时,转到错误处理,msgbox 出一个对话框,选"确定",重新选择数据库,选"取消",退出选择,并关闭连接。**出现问题:
当我第一次选择错误格式的数据库时候,程序可以正常的转向异常处理部分,可是当我点“确定”,重新进行选择的时候,在程序中标  “¥” 处出错,说不能在数据库中找到需要的表。
现在我比较疑惑的是,为什么开始时候在这个地方可以顺利的转到异常处理,可是第二次选择的时候却报错恳请大家帮忙,谢谢程序如下:Private Sub cmdSelectDataBase_Click()
Retry:
   With dlgChooseFile
        .Filter = "Microsoft Access|*.mdb"
        .ShowOpen
    End With
    
    If dlgChooseFile.FileName = "" Then
        ''没有选择任何数据库
        Exit Sub
    Else
       '指向需要打开的数据库
       strLink = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlgChooseFile.FileName
    End If
    
    oCnn.Close '关闭以前的数据库 排除用于开始没有打开数据库,而又选择一数据库的情况
    oCnn.Open strLink  '打开新数据库    Dim cmd As ADODB.Command
    Dim rst2 As ADODB.Recordset
    
    Set cmd = New ADODB.Command
    
    cmd.ActiveConnection = oCnn
    cmd.CommandType = adCmdText
¥  cmd.CommandText = "select * from 测试记录表"   
    
    On Error GoTo MyError  '数据库格式不正确,转到异常处理部分
    Set rst2 = cmd.Execute
    
    If Not rst2.EOF Then
       rst2.MoveFirst
    Else
       Exit Sub  ''数据库没有记录
    End If
        
MyError:
    Err.Clear
    If MsgBox("数据库格式不正确,重新选择数据库?", vbExclamation + vbOKCancel + vbDefaultButton1, "错误") = vbOK Then
       GoTo Retry
    Else
       oCnn.close
    End If
End Sub

解决方案 »

  1.   

    '关闭以前的数据库 排除用于开始没有打开数据库,而又选择一数据库的情况
        if oCnn.State=0 then oCnn.Close     oCnn.Open strLink  '打开新数据库    Dim cmd As ADODB.Command
        Dim rst2 As ADODB.Recordset
        
        Set cmd = New ADODB.Command
        
        cmd.ActiveConnection = oCnn
        cmd.CommandType = adCmdText'可能是由于你新选择的数据库中没有“测试记录表”这个表!
    ¥  cmd.CommandText = "select * from 测试记录表"   
        
        On Error GoTo MyError  '数据库格式不正确,转到异常处理部分
        Set rst2 = cmd.Execute
        Set cmd=nothing