机房收费系统----用户登陆软件关闭软件信息在worklog表中的添加

       在机房的时候确实有许多细节需要注意,有很多事数据库中的细节问题,正式开始之前,对数据库中的各个表进行了一个小小的研究和讨论,为了能够后期更方便的在写代码过程中清楚运用哪个表。其中在Worklog这个表中发小了一些问题,那就是这表中的数据在登陆时添加一条记录,在退出窗体时添加的这条记录又进行更新一次。

       登陆时候增加信息的代码很简单了:

Private Sub MDIForm_Load()
    txtSQL = "select * from onwork_info "    '   查询记录
    Set mrc = ExecuteSQL(txtSQL, msgtext)

    txtSQL = "select * from user_info where userID='" & UserName & "'"     '  查询指定用户
    Set mrcc = ExecuteSQL(txtSQL, msgtext)

    txtSQL = "select * from  worklog_info where userID='" & UserName & "'"  '查询指定记录"
    Set mrccc = ExecuteSQL(txtSQL, msgtext)
    
    '更新onwork数据表
    mrc.AddNew
    mrc.Fields(0) = Trim(mrcc.Fields(0))
    mrc.Fields(1) = Trim(mrcc.Fields(2))
    mrc.Fields(2) = Trim(Date)
    mrc.Fields(3) = Trim(Time)
    mrc.Fields(4) = VBA.Environ("computername")
    mrc.Update
    mrc.Close
    
      '更新worklog数据表
    mrccc.AddNew
    mrccc.Fields(1) = Trim(UserName)
    mrccc.Fields(2) = Trim(mrcc.Fields(2))
    mrccc.Fields(3) = Trim(Date)
    mrccc.Fields(4) = Trim(Time)
    mrccc.Fields(7) = VBA.Environ("computername")
    mrccc.Fields(8) = "True"
    mrccc.Update
    myBookmark = mrccc.Bookmark
    mrccc.Close
    
    txtSQL = "select * from user_info where userid='" & UserName & "'"
    Set mrc = ExecuteSQL(txtSQL, msgtext)
  
  Rem:权限判定
    If Trim(mrc.Fields(2)) = "一般用户" Then
        frmMain.Operation(1).Enabled = False
        frmMain.Manager(2).Enabled = False
    End If

    If Trim(mrc.Fields(2)) = "操作员" Then
        frmMain.Manager(2).Enabled = False
    End If
    mrc.Close
End Sub

此代码用到了书签“bookmark”,记得一定要进行定义。(我感觉Bookmark的作用就是做一个标记,在使用的时候直接移动到这个标签处使用就可以(希望有大神能够帮我完善))。

        然后就是关闭窗体的代码,关闭窗体的时候,Worklog进行更新,这里用到了QueryUnload事件,此代码在frmMain窗体上写:

Rem:判定是否退出,清空ONwork数据表
Private Sub MDIForm_queryUnload(Cancel As Integer, unloadmode As Integer)
    txtSQL = "select * from onwork_info where userid='" & Trim(UserName) & "'"
    Set mrcc = ExecuteSQL(txtSQL, msgtext)

    txtSQL = "select * from  worklog_info where userid='" & UserName & "' "    ' 
    Set mrccc = ExecuteSQL(txtSQL, msgtext)

    If MsgBox("确定关闭吗", vbOKCancel + vbExclamation, "温馨提示") = vbOK Then
          '更新worklog数据表
        mrccc.Bookmark = myBookmark
        mrccc.Fields(5) = Trim(Date)
        mrccc.Fields(6) = Trim(Time)
        mrccc.Fields(8) = "False"

        mrccc.Update
        mrccc.Close

        Do While Not mrcc.EOF
            mrcc.Delete
            mrcc.Update
            mrcc.MoveNext
        Loop
        Cancel = 0
    Else
        Cancel = 1
    End If

End Sub

       此代码在开始的时候一直没有实现功能,后来经过多次调试,发现在worklog的代码中用精确查找就能够轻易解决问题了。本以为问题很难复杂,多次尝试,换个思维就能迎刃而解。 

       而且此代码的思路实在巨人的肩膀上学习的。

猜你喜欢

转载自blog.csdn.net/weixin_43267344/article/details/87153329