机房收费系统之上、下机

思路

上机:判断(卡号是否为空,是否已注册,是否已退卡,余额是否充足,是否正在上机)—调动学生信息到输入框i----数据同步到online_info表中—同步到line_info表中
下机:判断—计算消费金额—计算余额—余额更新到student_info表中----删除line_info表中的信息—更新line_info表—更新online_info

代码

rem:上机

 '上机时将上机卡的数据同步至online_info表中
    Set mrconline = New ADODB.Recordset
    onlinesql = "select * from online_info"
    Set mrconline = ExecuteSQL(onlinesql, msgtext)
    mrconline.AddNew
    mrconline.Fields(0) = Trim(txtcardno.Text)
    mrconline.Fields(1) = Trim(txttype.Text)
    mrconline.Fields(2) = Trim(txtstudentno.Text)
    mrconline.Fields(3) = Trim(txtname.Text)
    mrconline.Fields(4) = Trim(txtdepartment.Text)
    mrconline.Fields(5) = Trim(combosex.Text)
    mrconline.Fields(6) = Trim(txtondate.Text)
    mrconline.Fields(7) = Trim(txtontime.Text)
    mrconline.Fields(8) = Trim(VBA.Environ("computer"))
    lblamount.Caption = mrconline.RecordCount + 1   '显示上机人数
    mrconline.Update
    mrconline.Close
    
    '上机时将数据同步到line_info表中
    Set mrcline = New ADODB.Recordset
    linesql = "select * from line_info"
    Set mrcline = ExecuteSQL(linesql, msgtext)
    mrcline.AddNew
    mrcline.Fields(1) = Trim(txtcardno.Text)
    mrcline.Fields(2) = Trim(txtstudentno.Text)
    mrcline.Fields(3) = Trim(txtname.Text)
    mrcline.Fields(4) = Trim(txtdepartment.Text)
    mrcline.Fields(5) = Trim(combosex.Text)
    mrcline.Fields(6) = Trim(txtondate.Text)
    mrcline.Fields(7) = Trim(txtontime.Text)
    mrcline.Fields(13) = "正常上机"
    mrcline.Fields(13) = Trim(VBA.Environ("computer"))
    mrcline.Update
    mrcline.Close
    MsgBox "上机成功", 48, ""

rem:下机

OnTime = mrconline.Fields(7)
        offtime = Format(Now(), "yyyy-MM-dd H:mm:ss")      '获取下机时间日期格式
        linetime = Val(DateDiff("n", OnTime, offtime)) '计算上机时间   n代表返回的分钟,datediff返回一个指定两个特定日期之间的时间段数目的 Variant (Long)。

        '计算消费金额
        basicdatasql = "select * from basicdata_info"
         Set mrcbasicdata = ExecuteSQL(basicdatasql, msgtext)
         
         '消费时间小于准备时间,则金额为0
         If Trim(linetime) < Val(Trim(mrcbasicdata.Fields(4))) Then
             txtconsume.Text = 0
             txtconsumetime.Text = 0
         Else
'              txtconsume.Text = Val(consumetime) - Val(mrcbasicdate.Fields(4))
              txtconsumetime.Text = linetime
              
          If Trim(txttype.Text) = "固定用户" Then
               txtconsume.Text = Format(linetime / mrcbasicdata.Fields(2) * mrcbasicdata.Fields(0), "0.00")
          Else
               txtconsume.Text = Format(linetime / mrcbasicdata.Fields(2) * mrcbasicdata.Fields(1), "0.00")
          End If
         
          
          stusql = "select * from student_info"
           Set mrcstu = ExecuteSQL(stusql, msgtext)
          '计算余额
          txtcash.Text = Val(mrcstu.Fields(7)) - Val(Trim(txtconsume.Text))
          
          '将余额更新到student表中
          mrcstu.Fields(7) = Val(Trim(txtcash.Text))
          mrcstu.Update
          mrcstu.Close
        End If
        
        '删除line表中的信息
        linesql = "select * from line_info"
            Set mrcline = ExecuteSQL(linesql, msgtext)
        
'        On Error GoTo 1:
'
'            mrcline.MoveFirst
'            Call viewdate
'
'               mybookmark = mrcline.Bookmark     '对当前记录进行标记
'               mcclean = True '可编辑状态
               If mrcline.EOF And mrcline.BOF Then
                   MsgBox "无记录"
                   Exit Sub
               Else
                    mrcline.Delete
                    mrcline.Update
                    mrcline.Close
               End If
                    
                   
        '更新line表
        linesql = "select * from line_info where cardno='" & txtcardno.Text & "'"
            Set mrcline = ExecuteSQL(linesql, msgtext)
        With mrcline
            .AddNew
            .Fields(1) = Trim(txtcardno.Text)
            .Fields(2) = Trim(txtstudentno.Text)
            .Fields(3) = Trim(txtname.Text)
            .Fields(4) = Trim(txtdepartment.Text)
            .Fields(5) = Trim(combosex.Text)
            .Fields(6) = mrconline!ondate
            .Fields(7) = mrconline!OnTime
            .Fields(8) = Trim(txtoffdate.Text)
            .Fields(9) = Trim(txtofftime.Text)
            .Fields(10) = Trim(txtconsumetime.Text)
            .Fields(11) = Trim(txtconsume.Text)
            .Fields(12) = Trim(txtcash.Text)
            .Fields(13) = "正常上机"
            .Fields(14) = Trim(VBA.Environ("computer"))
            
'            !computer = VBA.Environ("computer")
'            !offdate = Trim(txtoffdate.Text)
'            !offtime = Trim(txtofftime.Text)
'            !consumetime = Trim(txtconsumetime.Text)
'
'            !cash = Trim(txtcash.Text)
'            !Status = "正常上机"
            .Update
            .Close
        End With
        
       
        '更新online表
        mrconline.Delete
        mrconline.Update
        mrconline.Close

rem:显示上机人数

  '显示正在上机人数
        onlinesql = "select * from online_info"
        Set mrconline = ExecuteSQL(onlinesql, msgtext)
        If mrconline.EOF Then
            lblamount.Caption = 0
        Else
            lblamount.Caption = mrconline.RecordCount
        End If

总结

发现的源动力来自不将就

猜你喜欢

转载自blog.csdn.net/weixin_42957931/article/details/86529048