機房收費系統中有三種下機的方式分別是在主界面的下機和在學生上機狀態中的全部下機和選中下機
首先要明白功能存在的意義
個人理解:三種下機按鈕各自面臨的情況不同
第一個下機是有單個上機的人要離開 一個下機按鈕就可以搞定 。 而當出現十幾個二十幾個 幾十個 不連續的人要求下機的時候,一個一個的下機就會出現擁擠排隊下機的情況 這肯定不是我們想要的,這就用到了選中學生下機,可以一鍵將排隊下機的人全部下機,選中下機上邊的全部下機就更好理解了。一鍵所有人下機
好了 說完了功能的意義
現在就是要實現這個功能 這裏只講選中下機 全部下機的道理是一樣的 但是要比選中下機要簡單很多了
選中下機重點在於實現“選中”
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
以上就是選中下機的具體代碼
全部下機跟這個道理是一樣的 這裏就不多說了
大家只要將導圖畫好了就不會亂了