前言:
操作员工作记录包括一般用户,操作员和管理员的工作记录,我们想要查询操作员工作记录,就要用到worklog表,这个表中的记录是每次登陆这个系统时添加的,然后退出系统时再更新这条记录。说到worklog表,与之联系的还有onwrok表(查询正在值班教师需要用到),这个表是登陆的时候添加一条记录,退出时删除相应的记录。我们可以在主界面中添加代码完成操作。
登陆时添加代码:
Private Sub mdiForm_Load()
Dim txtsql As String
Dim msgtext As String
Dim mrc As ADODB.Recordset
Dim mrcc As ADODB.Recordset
Dim mrccc As ADODB.Recordset
Label1.Visible = False
'查询
txtsql = "select * from onwork_info"
Set mrcc = ExecuteSQL(txtsql, msgtext)
txtsql = "select * from worklog_info "
Set mrccc = ExecuteSQL(txtsql, msgtext)
txtsql = "select * from user_info where userid='" & Trim(UserName) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
'更新onwork表
mrcc.AddNew
mrcc.Fields(0) = Trim(mrc.Fields(0))
mrcc.Fields(1) = Trim(mrc.Fields(2))
mrcc.Fields(2) = Date
mrcc.Fields(3) = time
mrcc.Fields(4) = GetThisComputerName
mrcc.Update
'更新worklog表
mrccc.AddNew
mrccc.Fields(1) = Trim(mrc.Fields(0))
mrccc.Fields(2) = Trim(mrc.Fields(2))
mrccc.Fields(3) = Trim(mrcc.Fields(2))
mrccc.Fields(4) = Trim(mrcc.Fields(3))
mrccc.Fields(7) = GetThisComputerName
mrccc.Fields(8) = "true"
mrccc.Update
'判断权限
If Trim(mrc!Level) = "一般用户" Then
czy.Enabled = False
gly.Enabled = False
Else
If Trim(mrc!Level) = "操作员" Then
czy.Enabled = True
gly.Enabled = False
End If
End If
mrc.Close
mrcc.Close
mrccc.Close
txtsql = "select * from online_info"
Set mrc = ExecuteSQL(txtsql, msgtext)
lblshangji.Caption = mrc.RecordCount
mrc.Close
End Sub
退出系统时用到了窗体的QueryUnload事件,我们可以判断是否要退出系统
退出系统时添加代码:
Private Sub mdiForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim txtsql As String
Dim msgtext As String
Dim mrcc As ADODB.Recordset
Dim mrccc As ADODB.Recordset
txtsql = "select * from onwork_info where userid='" & Trim(UserName) & "'"
Set mrcc = ExecuteSQL(txtsql, msgtext)
txtsql = "select * from worklog_info where logintime='" & Trim(mrcc.Fields(3)) & "' and logindate=' " & Trim(mrcc.Fields(2)) & "'"
Set mrccc = ExecuteSQL(txtsql, msgtext)
'判断是否要退出系统
If MsgBox("确定关闭吗", vbOKCancel + vbExclamation, "温馨提示") = vbOK Then
'更新worklog数据表
mrccc.Fields(5) = Trim(Date)
mrccc.Fields(6) = Trim(time)
mrccc.Fields(8) = "False"
mrccc.Update
mrccc.Close
'删除onwork表中的记录
Do While Not mrcc.EOF
mrcc.Delete
mrcc.Update
mrcc.MoveNext
Loop
Cancel = 0
Else
Cancel = 1
End If
End Sub
这就是对worklog和onwork两个表的相关使用。