上下机顾名思义就是给用户进行上机和下机操作。
先说上机部分,上机需要先判断是否有卡号或卡号在使用,如果有卡号就判断是否在上机,在上机就将此卡信息添加到文本框中,不在上机就判断用余额是否充足,余额充足就可以让用户正常上机
上机代码
'先判断卡号是否存在,包括有卡号和在使用
txtSQL = "select * from student_info where cardno= '" & Trim(cardno.Text) & "' And Status = '使用'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF Then
MsgBox "您未输入卡号或此卡未注册!", vbOKOnly + vbExclamation, "提示"
cardno.SetFocus
cardno.Text = ""
mrc.Close
Else
mrc.Close
'判断是否在上机
txtSQL = "select * from online_info where cardno= '" & Trim(cardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.EOF = False Then '若在上机
MsgBox "该用户已上机", vbOKOnly + vbExclamation, "提示"
mrc.Close
'自动添加第一次上机信息
txtSQL = "select * from student_info where cardno= '" & Trim(cardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
studentno.Text = mrc.Fields(1)
studentname.Text = mrc.Fields(2)
sex.Text = mrc.Fields(3)
department.Text = mrc.Fields(4)
cash.Text = mrc.Fields(7)
txttype.Text = mrc.Fields(14)
mrc.Close
'上机日期时间显示
txtSQL = "select * from online_info where cardno= '" & Trim(cardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
ondate.Text = mrc.Fields(6)
ontime.Text = mrc.Fields(7)
Timer1.Enabled = True
Else
mrc.Close
'判断是否有余额,不足提示余额不足调用充值界面进行充值
'查看余额
txtSQL = "select cash from student_info where cardno= '" & Trim(cardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
If mrc.Fields(0) <= 0 Then
MsgBox "余额不足请充值后上机", vbOKOnly + vbExclamation, "警告"
mrc.Close
frmRecharge.Show
Else
'可以上机,自动添加信息
txtSQL = "select * from student_info where cardno= '" & Trim(cardno.Text) & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
studentno.Text = mrc.Fields(1)
studentname.Text = mrc.Fields(2)
sex.Text = mrc.Fields(3)
department.Text = mrc.Fields(4)
cash.Text = mrc.Fields(7)
txttype.Text = mrc.Fields(14)
offdate.Text = ""
offtime.Text = ""
consumetime.Text = ""
consume.Text = ""
ondate.Text = Date
ontime.Text = Time
Timer1.Enabled = True
MsgBox "上机成功!", vbOKOnly + vbExclamation, "警告"
'更新数据库online_info里的信息
txtSQL = "select * from online_info "
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.AddNew
mrc.Fields(0) = cardno.Text
mrc.Fields(1) = txttype.Text
mrc.Fields(2) = studentno.Text
mrc.Fields(3) = studentname.Text
mrc.Fields(4) = department.Text
mrc.Fields(5) = sex.Text
mrc.Fields(6) = ondate.Text
mrc.Fields(7) = ontime.Text
mrc.Fields(8) = "公子电脑"
mrc.Update
lbloncount.Caption = mrc.RecordCount
End If
End If
End If
下机部分也是先判断是否有卡号在上机,如果有就可以进行下机操作,先判断消费时间是否小于最小上机时间和准备时间(不列入计算之中,显示为0),如果大于就可以进行实际计费,重点是时间的计算,可以用公式 DateDiff(“n”,上机时间, 下机时间)进行计算。然后将消金额,所剩余额计算出来显示并更新到数据库就ok了。
下机
'调用数据
txtSQL = "select * from student_info where cardno='" & Trim(cardno.Text) & "' and status='使用'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from online_info where cardno='" & Trim(cardno.Text) & "'"
Set mrc2 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from basicdata_info "
Set mrc3 = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from line_info "
Set mrc4 = ExecuteSQL(txtSQL, MsgText)
'显示正在上机的人数
If mrc2.EOF Then
MsgBox "此卡没有上机", vbInformation, "提示"
lbloncount.Caption = mrc2.RecordCount
Else
studentno.Text = mrc2.Fields(2)
txttype.Text = mrc2.Fields(1)
studentname.Text = mrc2.Fields(3)
sex.Text = mrc2.Fields(5)
department.Text = mrc2.Fields(4)
ontime.Text = mrc2.Fields(7)
ondate.Text = mrc2.Fields(6)
offtime.Text = Time
offdate.Text = Date
cash.Text = mrc1.Fields(7)
abc = DateDiff("n", mrc2.Fields(9), Format(Now(), "yyyy-mm-dd hh:mm:ss")) '实际消费时间
If abc > mrc3.Fields(3) And abc Mod 60 = 0 Then
consumetime.Text = Int(abc / 60)
Else
consumetime.Text = (Int(abc / 60) + 1)
End If
'判断实际消费时间是否小于准备时间
If abc < Trim(mrc3.Fields(4)) Then
consumetime.Text = 0
consume.Text = 0
cash.Text = mrc1.Fields(7)
End If
'判断实际消费时间是否小于至少上机时间
If abc < Trim(mrc3.Fields(3)) Then
consumetime.Text = "0"
consume.Text = "0"
cash.Text = Trim(mrc1.Fields(7)) - Trim(consume.Text)
MsgBox "下机成功", vbOKOnly + vbExclamation, "提示"
Else
If Trim(mrc1.Fields(14)) = "临时用户" Then '若为临时用户,消费金额的计算
consume.Text = (Int(abc / 60) + 1) * (Trim(mrc3.Fields(1)))
cash.Text = Trim(mrc1.Fields(7)) - Trim(consume.Text)
Else '若为固定用户,消费金额的计算
consume.Text = Int((abc / 60) + 1) * (Trim(mrc3.Fields(0)))
cash.Text = Trim(mrc1.Fields(7)) - Trim(consume.Text)
End If
MsgBox "下机成功", vbOKOnly + vbExclamation, "提示"
End If
'更新online表
mrc2.Delete
mrc2.Update
'更新line表
mrc4.Fields(8) = Trim(offdate.Text)
mrc4.Fields(9) = Trim(offtime.Text)
mrc4.Fields(10) = Trim(consumetime.Text)
mrc4.Fields(11) = Trim(consume.Text)
mrc4.Fields(12) = Trim(cash.Text)
mrc4.Fields(13) = "正常下机"
mrc4.Update
mrc4.Close
'更新student表
mrc1.Fields(7) = cash.Text
mrc1.Update
mrc1.Close
End If
'记录上机人数
lbloncount.Caption = mrc2.RecordCount
欢迎小伙伴们提出我的错误与不足,我会继续完善的!