Login vb6登录表单代码错误

Login vb6登录表单代码错误,login,vb6,Login,Vb6,我为我的登录表单设置了一个数据库,它运行良好。填充相同的数据库后,我无法使用添加到数据库中的数据登录。我被表格中的第一个条目卡住了 代码如下: Set recset = New ADODB.Recordset sql = "select * from tblLogin" recset.Open sql, connect, adOpenDynamic, adLockOptimistic recset.MoveFirst Do While Not recset.EOF If recset

我为我的登录表单设置了一个数据库,它运行良好。填充相同的数据库后,我无法使用添加到数据库中的数据登录。我被表格中的第一个条目卡住了

代码如下:

Set recset = New ADODB.Recordset
sql = "select * from tblLogin"
recset.Open sql, connect, adOpenDynamic, adLockOptimistic

recset.MoveFirst
Do While Not recset.EOF

    If recset("Username").Value = txtUsername.Text Or txtUsername.Text = "harenama" Then
        usname = True

        If recset("Password").Value = txtPassword.Text Or txtPassword.Text = "sankirtan" Then
            uspass = True

            If recset("Usertype").Value = "user" Then
            main.mnuAddUser.Enabled = False
            End If

            txtPassword.Text = ""
            txtUsername.Text = ""
            main.Show
            Me.Hide
        Else
            uspass = False
            MsgBox "Invalid Login! Incorrect Password", vbOKOnly, "Login"
            txtPassword.Text = ""
            txtUsername.Text = ""
            txtUsername.SetFocus
            Exit Do
            Exit Sub
        End If
        Exit Sub
    Else
        usname = False
        MsgBox "Invalid Login! Username not found.", vbOKOnly, "Login"
        txtPassword.Text = ""
        txtUsername.Text = ""
        Exit Do
        Exit Sub
    End If

    recset.MoveNext
    Loop

    recset.Close
    connect.Close

在代码中,您正在查看记录集的第一条记录。在使用此方法时,请记住这一点

IF

  • 用户名与用户键入的内容匹配,我们将查看 密码
  • 如果密码匹配,我们将查看
    UserType
  • 然后,我们显示
    main
    ,不管是什么
  • 然后您将退出
    子项
  • ELSE

    如果用户名与第一条记录中的任何内容都不匹配,那么字段将被清除,我们将退出
    Do循环
    子循环

    我希望看到的是:如果用户名不匹配,请转到下一条记录。只有在
    recset.EOF
    时,我才会被踢出
    Sub
    ——因为只有这样,你才能说你已经分析了每条记录

    Set recset = New ADODB.Recordset
    sql = "select * from tblLogin"
    recset.Open sql, connect, adOpenDynamic, adLockOptimistic
    
    recset.MoveFirst
    Do While Not recset.EOF
    
        If recset("Username").Value = txtUsername.Text Or txtUsername.Text = "harenama" Then
            usname = True
    
            If recset("Password").Value = txtPassword.Text Or txtPassword.Text = "sankirtan" Then
                uspass = True
    
                If recset("Usertype").Value = "user" Then
                main.mnuAddUser.Enabled = False
                End If
    
                txtPassword.Text = ""
                txtUsername.Text = ""
                main.Show
                Me.Hide
            Else
                uspass = False
                MsgBox "Invalid Login! Incorrect Password", vbOKOnly, "Login"
                txtPassword.Text = ""
                txtUsername.Text = ""
                txtUsername.SetFocus
                Exit Do 
                Exit Sub
            End If
            Exit Sub
        Else
            usname = False
            MsgBox "Invalid Login! Username not found.", vbOKOnly, "Login"
            txtPassword.Text = ""
            txtUsername.Text = ""
            Exit Do ' These are ending your search
            Exit Sub
        End If
    
        recset.MoveNext ' So you're never getting here
        Loop
    
        recset.Close
        connect.Close
    
    这是我的解决办法

        Set recset = New ADODB.Recordset
    sql = "select * from tblLogin"
    recset.Open sql, connect, adOpenDynamic, adLockOptimistic
    
    recset.MoveFirst
    Do While Not recset.EOF
    
        If recset("Username").Value = txtUsername.Text Or txtUsername.Text = "harenama" Then
            usname = True
    
            If recset("Password").Value = txtPassword.Text Or txtPassword.Text = "sankirtan" Then
                uspass = True
    
                If recset("Usertype").Value = "user" Then
                    main.mnuAddUser.Enabled = False
                End If
    
                txtPassword.Text = ""
                txtUsername.Text = ""
                main.Show
                Me.Hide
            Else
                uspass = False
                MsgBox "Invalid Login! Incorrect Password", vbOKOnly, "Login"
                txtPassword.Text = ""
                txtUsername.Text = ""
                txtUsername.SetFocus
    
            End If
        End If
    recset.MoveNext
    Loop
    'I placed this outside the loop as it will execute wether the conditions are met or not 
    If usname = False Then
    
            MsgBox "Invalid Login! Username not found.", vbOKOnly, "Login"
            txtPassword.Text = ""
            txtUsername.Text = ""
    
    End If
    
    recset.Close
    connect.Close`
    
    方法是这样的

  • 如果用户名与用户输入匹配,它将检查密码
  • 如果获得正确的密码,它将移动以检查用户类型
  • 如果密码错误,将出现提示消息
  • 如果用户名与recset.Movenext不匹配,则会检查下一行用户名是否匹配,直到recset.EOF

  • 您只查看代码中的第一条记录。在您可以
    recset.MoveNext
    之前,您正在退出
    Do循环
    子循环
    ,因为您输入的凭据与表中的第一条记录不匹配。我现在已经看到了问题,我将看看我能做些什么来解决它。@nice.atma Good!让我知道事情进展如何