请高手帮忙看看下面这个登录窗体的代码有什么错误,为什么用户名和密码必须设置成一样才有用,如用户名为“123”,密码也只能设成“123”。明天就要交数据库了,急啊。小弟先在这谢谢!
代码如下:
Public Function openrecord(str1 As String, record As ADODB.Recordset)
'创建一个查询,把符合str1中的SQL语句的记录集打开到record中
'为记录集record 分配空间
Set record = New ADODB.Recordset
'使用本数据库的连接打开记录集
record.Open str1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
End Function
Private Sub form_open(Cancel As Integer)
'设置打开窗体时的属性
Command10.Enabled = False
Form.KeyPreview = True
End Sub
Private Sub Command10_Click()
Dim strpassword, strusername As String
Dim flag As Integer
Dim record As ADODB.Recordset
flag = 0
'从"用户"表里读取用户名和密码
openrecord "select * from 用户", record
'循环判断用户名是否存在,密码是否正确
Do Until record.EOF
strusername = record("用户")
strpassword = record("密码")
If UCase(Me.Text1.Value) <> UCase(strusername) Then
record.MoveNext
'若相等,说明用户名存在,可以跳出循环
Else
flag = 1
Exit Do
End If
Loop
'flag=0 说明用户名不存在,进行处理
'设置文本框的内容为空,"确定"键不可用,焦点设在txtusername
If flag = 0 Then
MsgBox "没有这个用户,请重新输入"
Me.Text7.Value = ""
Me.Text1.Value = ""
Me.Text1.SetFocus
Command10.Enabled = False
Exit Sub
'若flag=1 说明所输入的用户名存在,进一步比较密码是否正确
'若密码出错,设置txtusername的内容不变,txtpassword的内容为空,
'若密码出错,"确定"键不可用,并把焦点设在txtpassword
Else
If UCase(Me.Text1.Value) <> UCase(strpassword) Then
MsgBox ("密码错误,请重新输入")
Me.Text7.Value = ""
Me.Text7.SetFocus
Command10.Enabled = False
Exit Sub
End If
End If
'用户名和密码都正确,打开"主界面"窗体
DoCmd.Close
DoCmd.OpenForm "主界面"
End Sub
Private Sub Command13_Click()
'设置"取消"键的事件过程
'点击取消后,文本框的内容为空,"确定"键不能用
Text7 = ""
Me.Text1.Value = ""
Command10.Enabled = False
Text2.SetFocus
End Sub
Private Sub form_keyup(keycode As Integer, Shift As Integer)
'检测用户名,密码文本框是否都有字符,有的话设置"确定"按钮可用
'在txtusername 或 txtpassword 中每键入一个字符,触发执行本段程序
'根据当前活动的控件名选择执行txtusername 或 txtpassword 的模块语句
Select Case Me.ActiveControl.Name
'若txtusername 和 txtpassword 中都至少有一个字符,cmdenter可用,否则不可用
Case "Text1":
'焦点在txtusername 时,若此文本框为空,则cmdenter不可用,退出此过程
If Me.ActiveControl.Text = "" Or IsNull(Me.ActiveControl.Text) Then
Command7.Enabled = False
Exit Sub
'若txtpassword文本框为空,则cmdenter不可用,退出此过程
Else
If Me.Text1.Value = "" Or IsNull(Me.Text7.Value) Then
Command10.Enabled = False
Exit Sub
End If
End If
Case "Text7":
On Error GoTo 11
'焦点在txtpassword 时,若此文本框为空,则cmdenter不可用,退出此过程
If Me.ActiveControl.Text = "" Or IsNull(Me.ActiveControl.Text) Then
11 Command10.Enabled = False
Exit Sub
'若txtusername文本框为空,则cmdenter不可用,退出此过程
Else
If Me.Text1.Value = "" Or IsNull(Me.Text1.Value) Then
Command10.Enabled = False
Exit Sub
End If
End If
Case Else:
'交点在其他控件,直接退出过程
Exit Sub
End Select
'txtusername 和 txtpassword 中都至少有一个字符,设置cmdenter可用
Command10.Enabled = True
Exit Sub
End Sub
Private Sub Command11_Click()
'单击"退出"按钮,退出access
DoCmd.Quit
End Sub
Private Sub 主体_Click()
End Sub
Private Sub Command14_Click()
On Error GoTo Err_Command14_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = ChrW(29992) & ChrW(25143) & ChrW(27880) & ChrW(20876)
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Command14_Click:
Exit Sub
Err_Command14_Click:
MsgBox Err.Description
Resume Exit_Command14_Click
End Sub