机房收费系统---------下机

机房和网吧其实是差不多的,去过网吧的都知道,我们是需要下机的,可下机并不简单,他不仅得计算上机的时间和消费的金额到line表,将金额进行同步,还得从上机表中删除。一开始想的时候总是缺点东西,之后看了师哥师姐的博客,加上自己的理解,也算了明白了其中的一些重点。

全部下机:

Private Sub AllOffLine_Click()
'连接上机表
txtSQL = "select*from online_info"
Set mrc_On = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select*from line_info "
Set mrc_Line = ExecuteSQL(txtSQL, MsgText)
'如果有数据,移动到第一条
If mrc_On.EOF And mrc_On.Bof Then
 '添加初始的表头
myFlexgrid.Clear
With myFlexgrid
    .Rows = 1
    .CellAlignment = 4
    .ColAlignment = 4
    .TextMatrix(0, 0) = "卡号"
    .TextMatrix(0, 1) = "姓名"
    .TextMatrix(0, 2) = "上机日期"
    .TextMatrix(0, 3) = "上机时间"
    .TextMatrix(0, 4) = "机房号"
End With
   Exit Sub
End If
'进行循环
While Not mrc_On.EOF
    mrc_Line.AddNew
        mrc_Line.Fields(1) = Trim(mrc_On.Fields(0))   '卡号
        CardNO = mrc_On.Fields(0)
        CardType = mrc_On.Fields(1)
        mrc_Line.Fields(2) = Trim(mrc_On.Fields(2)) '学号
        StuId = Trim(mrc_On.Fields(2))
        mrc_Line.Fields(3) = Trim(mrc_On.Fields(3)) '姓名
        mrc_Line.Fields(4) = Trim(mrc_On.Fields(4)) '院系
        mrc_Line.Fields(5) = Trim(mrc_On.Fields(5)) '性别
        mrc_Line.Fields(6) = Trim(mrc_On.Fields(6)) '上机日期
        mrc_Line.Fields(7) = Trim(mrc_On.Fields(7)) '上机时间
        '获得上机时间
        txtOnDate = Trim(mrc_On.Fields(6))
        txtOnTime = Trim(mrc_On.Fields(7))
       '获得下机日期 下机时间
        txtOffDate = Format(Date, "yyyy-MM-dd")
        txtOffTime = Format(Now, "hh:mm:ss")
        mrc_Line.Fields(8) = Trim(txtOffDate)   '下机日期
        mrc_Line.Fields(9) = Trim(txtOffTime) '下机时间
       '计算上机时间(分钟)
If Trim(txtOffDate) = Trim(txtOnDate) Then
    WorkMin = DateDiff("n", txtOnTime, txtOffTime) '分钟
    Work = WorkMin
Else
    Work = Work + DateDiff("n", txtOnDate, txtOffDate) - 1440
    WorkDay = DateDiff("n", "00:00:00", txtOffTime)
    Work = Work + WorkDay
    WorkDay = DateDiff("n", txtOnTime, "23:59:00")
    Work = Work + WorkDay + 1
End If
        mrc_Line.Fields(10) = Trim(Work) '消费时间
        '得到最低消费金额
            txtSQL = "select *from basicdata_info "
            Set mrc_BData = ExecuteSQL(txtSQL, MsgText)
            If mrc_BData.EOF Then
                MsgBox "没有基础数据,请添加基础数据,请联系管理员", 0 + 48, "警告"
                mrc_BData.Close
                txtCardNo.Text = ""
                Exit Sub
            Else
                LessTime = mrc_BData.Fields(3) '准备时间
                Rate = mrc_BData.Fields(0) '会员价格
                TmpRate = mrc_BData.Fields(1) '临时价格
                UnitTime = mrc_BData.Fields(2) '递增时间
                mrc_BData.Close
            End If
         '传出金额
        If Trim(CardType) = "临时用户" Then
            Cost = TmpRate
        Else
            Cost = Rate
        End If
        '判断是否大于两分钟的准备时间
        If Work < LessTime Then
            OnHour = 0
        Else
            OnHour = (Fix((Work - 2) / UnitTime))

            If (Work Mod 60) > 0 Then
                OnHour = OnHour + 1
            End If
        End If
        
        mrc_Line.Fields(11) = OnHour * Cost '消费金额 
        '得到余额
        txtSQL = "select *from student_info where cardno='" & CardNO & "'"
        Set mrc_Stu = ExecuteSQL(txtSQL, MsgText)
        If mrc_Stu.EOF Then
            MsgBox "该号没有上机", 0 + 48, "警告"
            mrc_Stu.Close
            txtCardNo.Text = ""
            txtCardNo.SetFocus
            Exit Sub
        Else
            Cash = mrc_Stu.Fields(7) '原本余额
            mrc_Stu.Close
        End If
        mrc_Line.Fields(12) = Cash - OnHour * Cost '剩余金额
        mrc_Line.Fields(13) = "正常下机"
        mrc_Line.Fields(14) = GetThisComputerName '电脑名
        mrc_Line.Fields(15) = Trim(UserName) '操作员
        mrc_Line.Fields(16) = "未结账" '状态
     
         '修改学生表中的不使用
        txtSQL = "select *from student_info where cardno='" & CardNO & "'"
        Set mrc_Stu = ExecuteSQL(txtSQL, MsgText)
        mrc_Stu.Fields(7) = Cash - OnHour * Cost
        mrc_Stu.Update
        If Trim(mrc_Stu.Fields(14)) = "临时用户" Then
            mrc_Stu.Fields(10) = "不使用"
            mrc_Stu.Update
            mrc_Stu.Close
          
            '下机
            txtSQL = "select *From cancelcard_info "
            Set mrc_CCard = ExecuteSQL(txtSQL, MsgText)
            mrc_CCard.AddNew
            mrc_CCard.Fields(0) = Trim(StuId) '学号
            mrc_CCard.Fields(1) = Trim(txtCardNo) ' 卡号
            mrc_CCard.Fields(2) = Cash - OnHour * Cost  '消费金额
            mrc_CCard.Fields(3) = Format(Date, "yyyy-MM-dd") '日期
            mrc_CCard.Fields(4) = Format(Now, "hh:mm:ss") '时间
            mrc_CCard.Fields(5) = Trim(UserName) '操作人名称
            mrc_CCard.Fields(6) = "未结账" '状态
            mrc_CCard.Update
            mrc_CCard.Close
        End If
        
mrc_Line.Update
mrc_On.Delete
mrc_On.MoveNext
Wend
mrc_Line.Close
mrc_On.Close

'添加初始的表头
myFlexgrid.Clear
With myFlexgrid
    .Rows = 1
    .CellAlignment = 4
    .ColAlignment = 4
    .TextMatrix(0, 0) = "卡号"
    .TextMatrix(0, 1) = "姓名"
    .TextMatrix(0, 2) = "上机日期"
    .TextMatrix(0, 3) = "上机时间"
    .TextMatrix(0, 4) = "机房号"
  End With
  End Sub

当然我们不可能每次都让全部人下机,总有人还想继续学习,这时候我们就要有能将部分选中的人进行下机的功能

部分下机

Private Sub ChooseOffLine_Click()
    myFlexgrid.SelectionMode = flexSelectionByRow '单击的时候选择的是整行
    myFlexgrid.FocusRect = flexFocusNone  '在当前单元的周围华一个焦点框
    myFlexgrid.HighLight = flexHighlightWithFocus '该值决定了所选的单元是否突出显示
    With myFlexgrid
        If .RowSel = 0 Then
            MsgBox "请选择数据!", 0 + 48, "提示"
            Exit Sub
        Else
            If .Rows > 0 Then
                txtSQL = "select*from online_info where cardno='" & Trim(myFlexgrid.TextMatrix(.RowSel, 0)) & "'"
                Set mrc_User = ExecuteSQL(txtSQL, MsgText)
                
                '判断用户是否正在登陆
                If Trim(myFlexgrid.TextMatrix(.RowSel, 0) = UserName) Then
                    MsgBox "该用户正在登陆,不能删除!", 0 + 48, "警告"
                    mrc_User.Close
                    Exit Sub
                Else
                    a = MsgBox("确定要对该用户进行下机吗?", vbYesNo, "提示")
                    
                    If a = 6 Then '如果选择的是确定
                        .RemoveItem .RowSel
                       Call OFF
                    Else
                        Exit Sub
                    End If
                End If
            End If
        End If
        
    End With
    '显示全部
    Call SumAll
End Sub

猜你喜欢

转载自blog.csdn.net/mazhaochen/article/details/87083619