psat蒸汽吹灰器:求VB高手指点一段程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/08 09:04:02
Private Sub Command1_Click()
txtSQL = "select * from user_Form where user_ID = '" & txtUserName.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub

以上是一个登陆窗体的代码,每次不管密码输入正确与否都会进入主界面很是疑惑,请高手指点以下,应该怎么该才能让只有密码对的情况下,进入!

按照你的思路,可以修改成这样:
Private Sub Command1_Click()
txtSQL = "select * from user_Form where user_ID = '" & txtUserName.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Or mrc.BOF Then '判断记录为空集时用 mrc.EOF Or mrc.BOF 请注意。
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
miCount = miCount + 1
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
'这里是登陆验证通过吧
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
miCount = 0
Exit Sub
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
miCount = miCount + 1
End If
End If
If miCount = 3 Then
msgbox "您已经超过最大登陆次数,请核对后重新登陆"
miCount = 0
Me.Hide
End If
End Sub

If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
Else
应该改为:
If mrc.EOF = True Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUserName.SetFocus
exit sub '好像这是这么写的退出过程,如果出错了就退出过程呀, 要 不然下面的的语句还继续执行不是一样还能进入到主界面吗!!!
Else

你判断如果密码与数据库中符合的话,就 使用 Me.Hide 来隐藏本窗体.不知道你的主界面是不是使用了另一个窗体? 是的话,你并没有任何调用主窗体的语句啊. 另外,你后面miCount应该是统计错误次数吧?如果达到三次,那也是Me.Hide,这不是跟密码正确了一样吗?

另外,再教你一个调试VB的好方法.使用F8键来逐语句运行程序,运行中,还可以把鼠标放在变量名上,停留几秒后会显示变量的值.用这种方法,你能跟踪出程序语句运行的流程以及各变量的状态,可以很快找出问题所在.

If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUserName.Text)
Else

这不是判断密码正确了吗?怎么还,Me.Hide ??
如果Me.Hide 这个和你显示的主界面是同级别的,也就是把这个隐藏了,后面那个自然就出来了,对不???呵呵
把Form(主界面).show放在Me.Hide后
后面那个3次错误的问题和这个一样,本来是要退出的,你隐藏前面的,后面自然也出来了....

其实还在show和Hide的问题,注意下窗体之间的显示和隐藏吧/

谢谢啊~