1.多写 ON ERROR GOTO ERR_MARK:程序出错处理
2。用 RS.FILTER更好3。Else
    If Not mrc.BOF = True Then
      mrc.MoveFirst
    End If
ls: If mrc("l_id") <> txtusername.Text Then
当记录为空, 使用mrc("l_id") 报错

解决方案 »

  1.   

    ls循环那里出错,以下代码已调试通过
    Private Sub Command1_Click()
    Dim cn As ADODB.Connection
    Dim mrc As ADODB.Recordset
    Dim cmd As ADODB.Command
    Dim rst As ADODB.RecordsetSet cn = New ADODB.Connection
    cn.Open "Provider=microsoft.jet.oledb.4.0;data source=d:\hf\newhf.MDB"
    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = cn
    Set mrc = New ADODB.Recordset
    cmd.CommandText = "Select * From login;"
    mrc.Open cmd, , adOpenStatic, adLockBatchOptimisticIf Trim(txtusername.Text = "") Then
        MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
        txtusername.Text = ""
        txtpassword.Text = ""
        txtusername.SetFocus
    Else
        If Not mrc.BOF = True Then
          mrc.MoveFirst
        End If
        Do While Not mrc.EOF
            If mrc("l_id") <> txtusername.Text Then
                mrc.MoveNext
                If mrc.EOF Then
                    MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
                    txtusername.Text = ""
                    txtpassword.Text = ""
                    txtusername.SetFocus
                    Exit Sub
                End If
            Else
                If mrc("l_password") = txtpassword.Text Then
                   MDIMain.Show
                   Unload Me
                Else
                   MsgBox "密码错误,请重试!", vbOKOnly + vbExclamation, "警告"
                   txtpassword.Text = ""
                   txtpassword.SetFocus
                End If
                Exit Sub
            End If
        Loop
    End If
    Set mrc = Nothing
    Set cmd = Nothing
    Set cn = Nothing
    End Sub