机房收费系统【VB版】——选择下机
前言:
今天實現機房收費系統——一般用戶——學生上機狀態查看——選中全部/部分下機部分收獲很多!多虧了看光哥的博客,寫的很清楚機房收費系統——上機狀態查詢之下機
過程:
要顯示的表格式寫查詢,就會出來這樣子
Private Sub 顯示全部_Click()Dim txtSQL As StringDim MsgText As StringDim mrc As ADODB.Recordset '作為的連接online_info表查詢的結果集txtSQL = "select cardno,studentNo,ondate,OnTime,computer from OnLine_Info"Set mrc = ExecuteSQL(txtSQL, MsgText)If mrc.EOF = True ThenMsgBox "查詢到0條記錄", vbOKOnly + vbInformation, "提示!"ElseWith MSFlexGrid1Do While mrc.EOF = False.Rows = .Rows + 1
' .CellAlignment = 4.TextMatrix(.Rows - 1, 0) = mrc!cardno.TextMatrix(.Rows - 1, 1) = mrc!studentNo.TextMatrix(.Rows - 1, 2) = mrc!ondate.TextMatrix(.Rows - 1, 3) = mrc!OnTime.TextMatrix(.Rows - 1, 4) = mrc!computer.TextMatrix(.Rows - 1, 5) = ""mrc.MoveNextLoopEnd WithEnd If
End Sub
接著我們可以看到它的
要想實現選中的下機,首先把選中的記錄用一個符號√來標識這條記錄!
這里定義了兩個數組,分別來存儲標識√的記錄它的行號和學號。
i=0 有√標識的記錄數目
for j=0 to .rows-1if 符合√ then記錄行號到數組xh(s)記錄學號到數組sz(z)i=i+1end if
next j
'j是真實的表格中的行數,通過標識√篩選遍歷一遍,將有√記錄的信息記錄并保留到數組中,并且將有記錄的行數計算出了
for Z=0 to i-1 (0~i-1=i行,也就是由記錄的i行)通過數組引用一個個的學號,學號是主鍵,查詢表得到記錄集mrc3 basicdate_infomrc4 studeng_infomrc1 online_infomrc2 Line_infoZ=Z+1
next Z
'通過這樣的一次遍歷查詢到數據庫中的每一條記錄
'因為選中的部分即將下機,引用這些記錄的信息來進行結算帳目部分的計算!下機之前結賬完畢!
'將選中的學生的數據進行更新,消費時間,消費金額,正常下機等等!修改包括student表和Line表
'最后從Online_info表中刪除這些信息
接著,非常奇妙的部分就是如何實現部分
這段選擇的代碼真的是非常的巧妙,本意按下鼠標,選擇要下機的學生;
前提是顯示出來的信息都是沒有選中的!在顯示全部后所有的信息都是沒有選中的狀態!
在選的過程中:
按下鼠標之前,假設是沒有選中的,按下后把它變為選中的狀態;
按下鼠標之前,假設是選中的狀態,按下后把它變為沒有選中的狀態;【二次按下鼠標就會需要這樣的機制】
Private Sub msflexgrid1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)'如何選中不連續的行Dim col As IntegerIf MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√" ThenMSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = ""'改變行顏色(變為沒選中之前的)For col = 0 To MSFlexGrid1.Cols - 1MSFlexGrid1.col = colMSFlexGrid1.CellBackColor = vbWhiteNext colElseMSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 5) = "√"'改變行顏色(選中后的顏色)For col = 0 To MSFlexGrid1.Cols - 1MSFlexGrid1.col = colMSFlexGrid1.CellBackColor = &HFFFF00 Next colEnd If
這部分的代碼是復制的,但我覺得寫得非常巧妙!
總結:
1.分析代碼,不會就一點一點測試
2.寫代碼而不是改代碼,學習一招致命。
3.把問題復雜化其實是了避免直接面都那么難的問題,找到本質,就不難!
4.選擇單行MSFlexGrid或是單元格
MouseColLong返回鼠標光標的列坐標位置
MouseRowLong返回鼠標光標的行坐標位置
選中某個單元
MsFlexGrid.Row=1
MsFlexGrid.Col=1
5. Dim sTokens() As String ‘定義名為sTokens字符串(數組)
Dim sTokens As string ‘定義名為sTokens字符串
6.trim:刪除字串符的空格
Trim$:去掉字符串左右兩端的空格
總結
以上是生活随笔為你收集整理的机房收费系统【VB版】——选择下机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vb中可视对象的操作
- 下一篇: 配置动态路由协议OSPF