機房收費系統之下機
阿新 • • 發佈:2018-12-19
下機找好邏輯然後慢慢來,平靜下心來,其實也不難。 主要邏輯和上機還是挺像的。 如圖: 部分程式碼如下: 一、判斷卡號是否為空:
If Trim(txtCardno.Text) = "" Then
MsgBox "請輸入卡號,卡號不能為空!", 48, "提示"
Exit Sub '防止錯誤 3021
二、判斷此卡是否存在
Else txtsql = "select * from student_info where cardno='" & txtCardno.Text & "'" Set mrc = ExecuteSQL(txtsql, msgtext) If mrc.EOF = True Then MsgBox "此卡不存在,請重新輸入", 48, "提示"
三、檢查此卡是否登出
Else
txtsql = "select * from student_info where cardno='" & txtCardno.Text & "'and status='不使用'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF = False Then
MsgBox "此卡已經被登出,請重新輸入卡號", 48, "提示"
txtCardno.Text = ""
mrc.Close
四、檢查此卡是否上機
Else
txtsql = "select * from online_info where cardno='" & txtCardno.Text & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF = True Then
MsgBox "此卡未上機,請輸入其他卡號!", 48, "提示"
Exit Sub '防止出現錯誤 3021
五、計算消費金額,這裡只有小於兩分鐘的,大於兩分鐘的和計算消費餘額寫在了一起。
Else txtofftime.Text = Time txtoffdate.Text = Date txtlinetime.Text = DateDiff("n", txtOntime.Text, txtofftime.Text) '注意datediff函式的使用 n代表計算的單位,這裡是分鐘,後面依次是開始時間和結束時間。 '計算消費金額 '先判斷消費時間是否小於兩分鐘,如果小於兩分鐘,則不收費的 txtsql = "select * from basicdata_info" Set mrc1 = ExecuteSQL(txtsql, msgtext) txtsql = "select* from student_info where cardno='" & txtCardno.Text & "'" Set mrc = ExecuteSQL(txtsql, msgtext) If txtlinetime.Text <= 2 Then txtconsume.Text = 0 txtbalance.Text = mrc.Fields(7)
六、計算消費餘額,用已有的錢減去消費的金額。這裡分為固定使用者和臨時使用者,臨時使用者是一小時三元錢,固定使用者是一小時兩元錢,這在basicbase表中有顯示。
If mrc.Fields(14) = "固定使用者" Then
txtconsume.Text = (txtlinetime.Text / mrc1.Fields(2)) * mrc1.Fields(0)
'計算消費餘額
txtbalance.Text = Format(Val(mrc.Fields(7)) - Val(txtconsume.Text), "0.00")
Else'如果不是固定使用者的話
txtconsume.Text = (txtlinetime.Text / mrc1.Fields(2)) * mrc1.Fields(1)
'計算消費餘額
txtbalance.Text = Trim(Format(Val(mrc.Fields(7)) - Val(txtconsume.Text), "0.00"))
End If
然後將資訊同步line表,將資訊從online表中刪除
'將下機的資訊寫到line表當中
txtsqlline = "select * from line_info"
Set mrcline = ExecuteSQL(txtsqlline, msgtext)
mrcline.AddNew
mrcline.Fields(8) = Trim(txtoffdate.Text)
mrcline.Fields(9) = txtofftime.Text
mrcline.Fields(10) = txtlinetime.Text
mrcline.Fields(11) = Val(txtconsume.Text)
mrcline.Fields(12) = Val(txtbalance.Text)
'將資訊從online表中刪除
txtsql = "select * from online_info"
Set mrc = ExecuteSQL(txtsql, msgtext)
Label15.Caption = mrc.RecordCount - 1
mrc.Delete
mrc.Update
mrc.Close
現在明白了,但當時弄了差不多一個上午,回過來看也不難。