一开始做下机的时候没有想到强制下机。有一个卡号我忘记下机了,结果cash成为负数了。所以就看师哥师姐的博客,看到了强制下机。弄强制下机是非常有必要的,在网吧上网的时候,如果一直上机 ,卡里余额为0甚至为负数,还在无止境的上机,商家不得赔钱?
下机流程图:
这是下机的流程图。动态下机利用timer控件,展示一下代码:
'判断是否有学生上机
txtsql = "select * from online_info "
Set mrcon = executeSQL(txtsql, msgtext)
If mrcon.EOF Then
Timer2.Enabled = False 'timer2控件不可用
Exit Sub
Else
mrcon.MoveFirst '移至第一条记录
End If
Rem:把上机卡号定义为一个数组
ReDim j(mrcon.RecordCount) As String
For i = 0 To mrcon.RecordCount - 1
j(i) = Trim(mrcon!cardno)
cardno = j(i)
Rem:查询表,online_info表,basicdata_info表,student_info表,line_info表
txtsql = "select * from online_info where cardno='" & Trim(cardno) & "'"
Set mrcon1 = executeSQL(txtsql, msgtext)
txtsql = "select * from basicdata_info "
Set mrcba = executeSQL(txtsql, msgtext)
txtsql = "select * from student_info where cardno='" & Trim(cardno) & "'"
Set mrcst = executeSQL(txtsql, msgtext)
txtsql = "select * from line_info "
Set mrcli = executeSQL(txtsql, msgtext)
Rem:记录上机时间
s = Trim(mrcon.Fields(6))
q = Trim(mrcon.Fields(7))
Rem:计算上机时长
mintime = DateDiff("n", q, Time)
mindate = DateDiff("n", s, Date)
ztime = Val(mintime) + Val(mindate)
Rem:总的上机时间首付大于准备时间
If ztime < mrcba!preparetime Then
txtctime.Text = 0
txtcmoney.Text = 0
txtcash.Text = mrcst.Fields(7)
Else
Rem:判断用户类型进行收费(固定用户or临时用户)
Rem:消费时间=上机时间-准备时间
ztime = ztime - Trim(mrcba.Fields(3))
txtcmoney.Text = ztime
Rem:判断消费时间是否超过最低消费时间
If ztime < Trim(mrcba.Fields(3)) Then
ztime = Trim(mrcba.Fields(3))
txtctime.Text = Trim(mrcba.Fields(3))
Else
ztime = ztime
End If
Rem:判断是否是固定用户,计算消费金额
Rem:固定用户
Dim pmoney As Currency '定义消费金额
If Trim(txtType.Text) = "固定用户" Then
Rem:round函数
pmoney = Format(Round(ztime / mrcba.Fields(2), 1) * mrcba.Fields(0), "0.00")
Else
'临时用户
pmoney = Format(Round(ztime / mrcba.Fields(2), 1) * mrcba.Fields(1), "0.00")
End If
Rem:动态计算余额
dmoney = Format(mrcst!cash - pmoney, "0,00")
txtcmoney.Text = Format(pmoney, "0.0") '
txtcash.Text = Format(dmoney, "0.00")
mrcst!cash = Format(mrcst!cash = pmoney, "0.00")
Rem:更新student
mrcst.Fields(7) = Trim(txtcash.Text)
mrcst.Update
If Val(txtcash.Text) > 0 And Val(txtcash.Text) < Trim(mrcba.Fields(5)) Then
MsgBox j(i) & ",您的余额已经不足" & mrcba.Fields(5) & "元,请您尽快充值!", vbOKOnly + vbExclamation, "提示"
End If
Rem:余额为0时,会强制下机,更新表
If mrcst.Fields(7) <= 0 Then
mrcst.Fields(7) = 0
mrcst.Update
mrcon1.Delete
mrcon1.Update
MsgBox "卡号" & j(i) & "余额不足,即将下机!", vbOKOnly + vbExclamation, "提示"
Rem:更新line表
mrcli.Fields(8) = Date
mrcli.Fields(9) = Time
mrcli.Fields(12) = mrcst.Fields(7)
mrcli.Fields(10) = ztime
mrcli.Fields(11) = pmoney
mrcli.Update
End If
End If
Next i
一定要多想想,为用户着想,结合实际。