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