1. 程式人生 > >機房收費系統之學生狀態檢視——全部下線

機房收費系統之學生狀態檢視——全部下線

對於這一部分,我感覺是機房挺不容易的一個部分,因為一開始思路沒有找對,總是想通過控制元件的顏色來判斷是否選中(因為選中之後可以控制顏色),哈哈哈,現在感覺鑽牛角尖了,後來實在不行了,快崩潰了,於是看了師哥的部落格,奧,,恍然大悟。

全部下機:
1、前提是先得顯示所有的線上使用者,然後點選全部下機,否則全部下機按鈕不可用。
2、計算餘額
3、同步line表
4、刪除資料庫中的線上人數
5、刪除msf表中的資料
部分程式碼展示(以下只是每一部分的程式碼,並沒有聯絡起來,有很多是穿插著使用的,我把它用分開的形式寫了出來。):

1、前提是先得顯示所有的線上使用者,然後點選全部下機,否則全部下機按鈕不可用。(原諒我這裡偷懶了,沒有用英文名字

在學生裡面有一個功能,就是沒有點選那個按鈕之前,這個按鈕是不能用的。所以在這裡我們設立一個mcclean。當沒有點選“顯示全部”這個按鈕的時候,“上機管理”這個按鈕是不能用的。程式碼如下(為了方便大家看,刪除了無關的程式碼):

Dim mcclean As Boolean
Private Sub Form_Load()
    mcclean = False’看這裡
End Sub
Private Sub 顯示全部_Click()
    mcclean = True’點選顯示全部之後就變得可用了
Private Sub 上機管理_Click()
    If mcclean = False Then’如果沒有點選"顯示全部"按鈕
        MsgBox "請先點選顯示全部", , "提示"
        所有學生下線.Enabled = False
        選中學生下線.Enabled = False
        Exit Sub
    Else
        所有學生下線.Enabled = True
        選中學生下線.Enabled = True
    End If
    
End Sub

2、計算餘額

    txtsql = "select * from online_info"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    If mrc.EOF Then
        MsgBox "沒有學生正在上線", 48, "提示"
    Exit Sub
    Else
        txtsql = "select * from student_info"
        Set mrc = ExecuteSQL(txtsql, msgtext)
        txtsql = "select* from basicdata_info"
        Set mrcc = ExecuteSQL(txtsql, msgtext)
        onlinetime = DateDiff("n", mrcc.Fields(8), Time)
        If onlinetime <= 2 Then '小於2分鐘不收費
            mrc.Fields(7) = mrc.Fields(7) - 0
        Else
            If mrc.Fields(14) = "固定使用者" Then
                mrc.Fields(7) = mrc.Fields(7) - onlinetime / 60 * 2
            Else
                consume = onlinetime / 60 * 3
                mrc.Fields(7) = mrc.Fields(7) - consume
                mrc.Update
                mrc.Close
            End if
        End if
             

3、同步line表

With MSFlexGrid1
    For i = 1 To MSFlexGrid1.Rows - 1
    txtsql = "select * from online_info where cardno='" & Trim(.TextMatrix(i, 0)) & "'"
    Set mrc1 = ExecuteSQL(txtsql, msgtext)
    Next 
 End With
 ········
  mrc5.AddNew
  mrc5.Fields(1) = Trim(mrc1.Fields(0))
   mrc5.Fields(2) = Trim(mrc1.Fields(2))
   mrc5.Fields(3) = Trim(mrc1.Fields(3))
   mrc5.Fields(4) = Trim(mrc1.Fields(1))
   mrc5.Fields(5) = Trim(mrc1.Fields(5))
   mrc5.Fields(6) = Trim(mrc1.Fields(6))
   mrc5.Fields(7) = Trim(mrc1.Fields(7))
   mrc5.Fields(8) = Date
   mrc5.Fields(9) = Time
   mrc5.Fields(10) = onlinetime
   mrc5.Fields(11) = consume
   mrc5.Fields(12) = Trim(mrc.Fields(7))
   mrc5.Fields(13) = "正常下機"
   mrc5.Fields(14) = Trim(StrCPN)
   mrc5.Update

4、刪除資料庫中的線上人數

		 txtsql = "delete from online_info"
                Set mrc1 = ExecuteSQL(txtsql, msgtext)

5、刪除msf表中的資料
這裡不叫刪除,其實就是恢復表頭狀態就可以了,當時也沒有想到這一點。

 		With MSFlexGrid1
                  .Rows = 2
                  .CellAlignment = 4
                  .TextMatrix(1, 0) = "卡號"
                  .TextMatrix(1, 1) = "姓名"
                  .TextMatrix(1, 2) = "上機日期"
                  .TextMatrix(1, 3) = "上機時間"
                  .TextMatrix(1, 4) = "機房號"
                End With

感謝觀看。