机房收费系统之全部下机-选中下机

机房收费系统中有三种下机的方式分别是在主界面的下机和在学生上机状态中的全部下机和选中下机在这里插入图片描述
在这里插入图片描述
首先要明白功能存在的意义
个人理解:三种下机按钮各自面临的情况不同
第一个下机是有单个上机的人要离开 一个下机按钮就可以搞定 。 而当出现十几个二十几个 几十个 不连续的人要求下机的时候,一个一个的下机就会出现拥挤排队下机的情况 这肯定不是我们想要的,这就用到了选中学生下机,可以一键将排队下机的人全部下机,选中下机上边的全部下机就更好理解了。一键所有人下机
好了 说完了功能的意义
现在就是要实现这个功能 这里只讲选中下机 全部下机的道理是一样的 但是要比选中下机要简单很多了
选中下机重点在于实现“选中”

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim col As Integer
    If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√" Then
        MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = ""
        '改变颜色  将选中与没选中分开(选中前)
        For col = 0 To MSFlexGrid1.Cols - 1
        MSFlexGrid1.col = col
        MSFlexGrid1.CellBackColor = vbWhite
        Next col
        Else
        MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√"
        '(选中后的)
        For col = 0 To MSFlexGrid1.Cols - 1
        MSFlexGrid1.col = col
        MSFlexGrid1.CellBackColor = vbBlue
        Next col
        End If

End Sub

选完之后就要实现下机的功能了 在这里一定要注意的是 不只是要下机 还要给每个下机的卡号算出钱来 这个功能涉及的表比较多 大家在写的时候一定不要乱

Dim sz(999) As String      '用来存放带√的学号
    Dim xh(999) As String       '用来存放行号
    Dim txtcash As String       '
    Dim cosumedate As String
    Dim cosumetime As String   '
    Dim consume As String       '
    Dim Msgtext As String
    Dim z As Integer            '存放带√的变量
    Dim i As Integer            '存放改变颜色时候的变量
    Dim s As Integer            '存放行号用的变量
    Dim j As Integer
      Dim txtsqlbas As String
      Dim mrcbas As adodb.Recordset
      txtsqlbas = "select * from basicdata_info"  '连接basicadata表
      Set mrcbas = ExecuteSQL(txtsqlbas, Msgtext)
      Dim txtsqlonl As String
      Dim mrconl As adodb.Recordset
      txtsqlonl = "select * from online_info "  '连接online表
      Set mrconl = ExecuteSQL(txtsqlonl, Msgtext)
        If mrconl.EOF Then
            MsgBox "当前无上机人员", 48, "提示"
            Else
            
            With MSFlexGrid1
        If .RowSel = 0 Then
            MsgBox "请选择学生", 48, "提示"
            Exit Sub
        End If
            End With
        
            With MSFlexGrid1            '
                i = 0
                For j = 1 To .Rows - 1
        If .TextMatrix(j, 5) = "√" Then
            sz(i) = .TextMatrix(j, 0)       '存的是卡号
            xh(i) = Val(j)
            i = i + 1
        End If
          Next j   '循环检索数据库
      
          For z = 0 To i - 1    '数组是从0开始
    Dim txtSQLlin As String
    Dim Mrclin As adodb.Recordset
    txtSQLlin = "select * from line_info where cardno = '" & sz(z) & "' and status = '正常上机'"
    Set Mrclin = ExecuteSQL(txtSQLlin, Msgtext)  '选择line表中的数据
   Dim StrCPN As String * 10
   GetComputerName StrCPN, 10 '获取电脑名称
    Do While Mrclin.EOF = False
       Mrclin.Fields(8) = Format(Date, "yyyy-mm-dd")
       
       Mrclin.Fields(9) = Time$
       Mrclin.Fields(13) = "正常下机"
       Mrclin.Fields(14) = Trim(StrCPN)
        cosumedate = DateDiff("n", Mrclin.Fields(6), Mrclin.Fields(8))
        cosumetime = DateDiff("n", Mrclin.Fields(7), Mrclin.Fields(9))
        Mrclin.Fields(10) = (Val(cosumedate) + Val(cosumetime)) + 1
         If mrconl.Fields(1) = "固定用户" Then    '计算钱数
          Mrclin.Fields(11) = Format(Mrclin.Fields(10) / mrcbas.Fields(2) * mrcbas.Fields(0), "0.00")
          Mrclin.Fields(11) = Format(Mrclin.Fields(10) / mrcbas.Fields(2) * mrcbas.Fields(1), "0.00")
          End If
          Mrclin.MoveNext
          Loop
          mrconl.Close
          Dim deleotxtsql As String
          Dim deleomrc As adodb.Recordset
          Dim deleomsgtext As String
            deleotxtsql = "delete from Online_Info where cardno='" & sz(z) & "'"
            Set deleomrc = ExecuteSQL(deleotxtsql, deleomsgtext)
          
          Next z
          For s = 0 To i - 1
             .RemoveItem xh(s)
          Next s

      
        
          txtsqlonl = " select * from online_info "
          Set mrconl = ExecuteSQL(txtsqlonl, Msgtext)
     '     frmMain.Label16.Caption = "当前上机人数:" & mrconl.RecordCount
          MsgBox "操作完成!", 48, "提示"
          
          End With
        
        End If
        End sub

以上就是选中下机的具体代码
全部下机跟这个道理是一样的 这里就不多说了
大家只要将导图画好了就不会乱了

发布了48 篇原创文章 · 获赞 6 · 访问量 2001

猜你喜欢

转载自blog.csdn.net/weixin_44693109/article/details/103218602