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
之前,您正在退出Do循环
和子循环
,因为您输入的凭据与表中的第一条记录不匹配。我现在已经看到了问题,我将看看我能做些什么来解决它。@nice.atma Good!让我知道事情进展如何