代码之上机时间的计算

       当时敲上机时间计算那个窗体时,真的感觉非常难,问别人吧,但是大家都是计算的一天之内的上网时间,也就是上网时间在24之外,计算的结果就不正确了.

下面这段代码就解决上网时间超过24小时的问题

‘窗体级别定义,整个窗体调用

Dim onboard As Date
Dim offboard As Date
 
Private Sub CmdOn_Click()
'记录上机时间
    TxtOnDate.Text = Date
    TxtOnTime.Text = Time

当 然还要将时间更新到数据库中

Private Sub CmdDown_Click()
Dim Costtime As Date
Dim c As Date
Dim b As Date
 
txtsql = "select*from Online where cardnumber='" & Trim(TxtCardnumber.Text) & "'And Explain ='" & "正常上机" & "' "
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF = False Then
'如果下机 记录下机时间
    TxtDownDate.Text = Date
    TxtDownTime.Text = Time
      offboard = Now  ‘记录下机时间
     c = mrc.Fields(2)  ‘在数据库中取出上机时间
     b = mrc.Fields(4)
     onboard = c + b
'计算上机时间
     a = DateDiff("s", CDate(onboard), CDate(offboard))
     Costtime = Format(a  3600 & ":" & (a Mod 3600)  60 & ":" & a Mod 3600 Mod 60)
     TxtCostTime.Text = Costtime

        在这个时间计算代码中有个缺点是,如果在下机时忘了点“下机”按钮,那么你的状态将会一直是上机,但是如果你在下机事件中不从数据库中取出上机时间的话用下面代码

Private Sub CmdDown_Click()
    onboard = Now  
    TxtOnDate.Text = Date
    TxtOnTime.Text = Time   

然后直接计算上机时间'计算上机时间

     a = DateDiff("s", CDate(onboard), CDate(offboard))

      也是有问题的,就是一关闭上机窗体,而忘记下机的话,虽然上机状态一直是上机,但是在下次打开程序下机时,上机时间是从你下次打开程序到点下按钮这段时间,而上次上机的时间是没有记录在内的。

原文地址:https://www.cnblogs.com/fuhaots2009/p/3476304.html