下机找好逻辑然后慢慢来,平静下心来,其实也不难。
主要逻辑和上机还是挺像的。
如图:
部分代码如下:
一、判断卡号是否为空:
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
现在明白了,但当时弄了差不多一个上午,回过来看也不难。