机房收费系统——选中下机

“学生上机状态查看”窗体中相对较难的部分是选中下机,而选中下机的重点在于如何实现“选中”的,以下是我的流程图和部分代码☟☟☟

全部下机和选中下机流程图

MSFlexGrid控件-选中行

Private Sub myflexgrid_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim col As Integer
    '选中相应行时,在选中行的第6列显示√
     If myflexgrid.TextMatrix(myflexgrid.Row, 5) = "√" Then
        myflexgrid.TextMatrix(myflexgrid.Row, 5) = ""
        '恢复颜色
        For col = 0 To myflexgrid.Cols - 1
        myflexgrid.col = col
        myflexgrid.CellBackColor = vbWhite
        Next col
        Else
        myflexgrid.TextMatrix(myflexgrid.Row, 5) = "√"
        '改变颜色
        For col = 0 To myflexgrid.Cols - 1
        myflexgrid.col = col
        myflexgrid.CellBackColor = &HFFFF00
        Next col
        End If
End Sub

实现选中功能后,就要设计选中下机部分的代码了,在这儿我们需要考虑到该功能不只是要选中用户下机,还需要将该卡号消费金额算出来,最后再更新相关数据表。

实现该功能的代码如下

Private Sub instudents_Click()
    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 myflexgrid
        If .RowSel = 0 Then
            MsgBox "请选择学生", 48, "提示"
            Exit Sub
        End If
            End With
        
            With myflexgrid
                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
    Do While mrclin.EOF = False
       mrclin.Fields(8) = Format(Date, "yyyy-mm-dd")
       
       mrclin.Fields(9) = Time
       
       mrclin.Fields(13) = "正常下机"
        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)
          MsgBox "操作完成!", 48, "提示"
          
          End With
        End If
End Sub

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值