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

机房和网吧其实是差不多的,去过网吧的都知道,我们是需要下机的,可下机并不简单,他不仅得计算上机的时间和消费的金额到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
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值