考虑到第一次机房上机系统一次打开系统,只能登陆三次,当然每次提示的内容是不一样的。并且根据不同的身份,会出现不同权限。
我的想法是在登陆窗体进行登陆和登陆次数的验证,在主窗体中判断身份,进行权限的判断。
登陆
注意:登陆窗体的代码
Private Sub cmdOK_Click()
'判断用户名是否为空
MiCount = MiCount + 1
UserName = Trim(txtID.Text)
'判断登录名不能为空
If Not Texttxt(txtID.Text) Then
Select Case MiCount
Case Is = 1
MsgBox "用户名不能为空!" & vbCr & "您还有两次次机会!", vbOKOnly + vbExclamation, "警告"
Case Is = 2
MsgBox "用户名不能为空!" & vbCr & "您还有一次次机会!", vbOKOnly + vbExclamation, "警告"
Case Is = 3
MsgBox "用户名不能为空!", vbOKOnly + vbExclamation, "警告"
End
End Select
Exit Sub
txtUserName.SetFocus
Else
'连接数据库
txtSQL = "select *from user_Info where userID='" & txtID.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
'判断是否有该用户
If mrc.EOF And mrc.BOF Then
' MsgBox "没有这个用户,请重新输入!", vbOKOnly + vbExclamation, "警告"
Select Case MiCount
Case Is = 1
MsgBox "没有这个用户,请重新输入!" & vbCr & "您还有两次次机会!", vbOKOnly + vbExclamation, "警告"
Case Is = 2
MsgBox "没有这个用户,请重新输入!" & vbCr & "您还有一次次机会!", vbOKOnly + vbExclamation, "警告"
Case Is = 3
MsgBox "没有这个用户,请重新输入!", vbOKOnly + vbExclamation, "警告"
End
End Select
txtID.Text = ""
txtPassword.Text = ""
txtID.SetFocus
Else
'如果有,判断密码是否正确
If Trim(txtPassword.Text) = Trim(mrc.Fields(1)) Then
'进入系统
FrmMain.Show
Exit Sub
Else
'密码错误,给予提示
txtPassword.Text = ""
txtPassword.Text = ""
txtPassword.SetFocus
Select Case MiCount
Case Is = 1
MsgBox "密码错误!" & vbCr & "您还有两次次机会!", vbOKOnly + vbExclamation, "警告"
Case Is = 2
MsgBox "密码错误!" & vbCr & "您还有一次次机会!", vbOKOnly + vbExclamation, "警告"
Case Is = 3
MsgBox "密码错误,请重新登陆!", vbOKOnly + vbExclamation, "警告"
End
End Select
End If
End If
End If
End Sub
权限判断
注意:主窗体的代码
Private Sub MDIForm_Load()
'显示当前时间
Dim mrc As ADODB.Recordset '用来存放记录集对象
Dim txtSQL$ '用来存放SQL语句
Dim MsgText$ '用来存放返回信息
'连接数据库
txtSQL = "select*from user_info where userid='" & UserName & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Level = Trim(mrc.Fields(2))
'将信息添加到工作表中
txtSQL = "select *from worklog_info "
Set mrc_wLog = ExecuteSQL(txtSQL, MsgText)
mrc_wLog.AddNew
mrc_wLog.Fields(1) = Trim(UserName) '操作的老师
mrc_wLog.Fields(2) = Level
mrc_wLog.Fields(3) = Format(Date, "yyyy-MM-dd")
mrc_wLog.Fields(4) = Format(Time, "hh:mm:ss")
mrc_wLog.Fields(5) = Null
mrc_wLog.Fields(6) = Null
mrc_wLog.Fields(7) = GetThisComputerName
mrc_wLog.Fields(8) = "True"
mrc_wLog.Update
Serial = mrc_wLog.Fields(0)
mrc_wLog.Close
'判断是否具有管理员权限
If (Trim(mrc.Fields(2))) = "管理员" Then
Operator.Enabled = True
Administrator.Enabled = True
mrc.Close '关闭数据库
Exit Sub
End If
'判断是否具有操作员权限
If (Trim(mrc.Fields(2))) = "操作员" Then
Operator.Enabled = True
mrc.Close '关闭数据库
Exit Sub
End If
'将信息添加到工作表中
txtSQL = "select *from worklog_info "
Set mrc_wLog = ExecuteSQL(txtSQL, MsgText)
mrc_wLog.AddNew
mrc_wLog.Fields(1) = Trim(UserName) '操作的老师
mrc_wLog.Fields(2) = Level
mrc_wLog.Fields(3) = Format(Date, "yyyy-MM-dd")
mrc_wLog.Fields(4) = Format(Time, "hh:mm:ss")
mrc_wLog.Fields(5) = ""
mrc_wLog.Fields(6) = ""
mrc_wLog.Fields(7) = GetThisComputerName
mrc_wLog.Fields(8) = "True"
mrc_wLog.Update
mrc_wLog.Close
End Sub
这种方式就是代码比较多,比较繁琐,但是基本功能实现了,如果您有更好的方式,期待您的分享!