一、上机流程
部分代码展示
If Not Testtxt(txtCardNo.Text) Then
MsgBox "请您填写您的账号信息", vbOKOnly + vbExclamation, "警告" '判断输入是否为空
txtCardNo.SetFocus
Exit Sub
End If
txtsql = "select * from student_Info where cardno='" & Trim(txtCardNo.Text) & "'and status='" & "使用" & "'"
Set mrc = ExecuteSQL(txtsql, msgtext)
If mrc.EOF Then
MsgBox "该账号不存在", vbOKOnly + vbExclamation, "警告" '判断是否存在该账号
txtCardNo = ""
txtCardNo.SetFocus
Else
txtsql2 = "select * from OnLine_Info where cardno='" & Trim(txtCardNo.Text) & "'"
Set mrc2 = ExecuteSQL(txtsql2, msgtext)
If mrc2.EOF = False Then
MsgBox "该账号正在上机", vbOKOnly + vbExclamation, "警告" '判断是否正在上机状态
txtCardNo = ""
txtCardNo.SetFocus
Else
txtsql3 = "select * from BasicData_Info"
Set mrc3 = ExecuteSQL(txtsql3, msgtext)
If Val(mrc.Fields(7)) < Val(mrc3.Fields(5)) Then '此处代表余额小于设定的最小的上机金额,
'如果只是小于一个具体数字的话会导致最低金额改动时,此处的约束无效
MsgBox "余额不足,请先充值", vbOKOnly + vbExclamation, "提示"
txtCardNo = ""
二、下机流程
重要部分代码展示
CTime = DateDiff("n", mrc1.Fields(9), Format(Now(), "yyyy-mm-dd hh:mm:ss"))
txtCTime.Text = Val(CTime) '通过使用DateDiff函数对上机时间进行计算,并在此转化为分钟
txtsql2 = "select * from BasicData_Info"
Set mrc2 = ExecuteSQL(txtsql2, msgtext2)
If CTime < mrc2.Fields(4) Then '上机时间小于准备时间,不计算金额
consume = 0
Else
txtsql = "select * from student_Info where cardno='" & (txtCardNo.Text) & "'"
Set mrc = ExecuteSQL(txtsql, msgtext) '消费金额=消费时间*单位费用(不同用户类型分别计算)
'利用Round函数进行四舍五入取整
If mrc.Fields(14) = "固定用户" Then
consume = Round(((CTime - mrc2.Fields(4)) / 60) * mrc2.Fields(0), 0)
Else
consume = Round(((CTime - mrc2.Fields(4)) / 60) * mrc2.Fields(1), 0)
End If
txtCMoney.Text = Int(consume)
End If
Dim yue As Integer
yue = Val(mrc.Fields(7) - consume) '卡号余额=账户余额-消费额度
txtBaLance.Text = yue
mrc.Fields(7) = txtBaLance.Text
mrc.Update
mrc.Close
mrc2.Close
End If