前言
机房进行了很长时间了,下面总结一下下机部分,还希望和大家共勉!
流程图
理清思路很重要,只有思路清晰了,下面才能顺利地进行!
知识点
1.更新line_info表中的信息
'更新line_info表中的信息,下机日期,时间,消费时间,消费金额,剩余金额,状态
txtSQL = "select * from line_info where cardno='" & txtcardno.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
mrc.Fields(8) = Date
mrc.Fields(9) = Time
mrc.Fields(10) = Trim(txttime.Text)
mrc.Fields(11) = Trim(txtconsume.Text)
mrc.Fields(12) = Trim(txtcash.Text)
mrc.Fields(13) = "正常下机"
txtSQL = "delete from online_info where cardno='" & txtcardno.Text & "'"
3.计算消费时间和金额
Dim w1 As Long
Dim w2 As Long
Dim a1 As Long
Dim a2 As Long
Dim x As Long
Dim w As Long
Dim a3 As String
Dim a4 As String
Dim money As Currency
txtOffLinedate.Text = Date
txtOffLinetime.Text = Time
' 计算消费时间和金额
' 固定用户一小时费用为 w1,临时用户一小时费用为w2,至少上机时间为t1,准备时间为t2,最少金额为w,
' 上机时间为time1,下机时间为time2,输出的钱为money,x为递增单位时间
' 准备时间不收钱,没有达到最少上机时间,收取金额为最少金额,达到最少上机时间后,按时间计算
txttime.Text = DateDiff("n", txtOnLinetime, txtOffLinetime) '计算消费时间
没有达到准备上机时间
' 没有达到准备上机时间
If Val(txttime.Text) < a2 Then
MsgBox "没有达到上机准备时间,不收取费用!", 48, "提示"
txtSQL = "delete from online_info where cardno='" & txtcardno.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
txtSQL = "select * from online_info"
Set mrc3 = ExecuteSQL(txtSQL, MsgText)
money = 0
txtconsume.Text = money
txtSQL = "select * from student_info"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Val(txtcash.Text) - money
txtcash.Text = mrc1.Fields(7)
Label16.Caption = mrc3.RecordCount '显示上机人数
Exit Sub
没有达到最少上机时间
' 没有达到最少上机时间
If Val(txttime.Text) < a1 + a2 Then
money = Trim(mrc7.Fields(5)) '消费金额为最少金额
txtconsume.Text = money
txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'and status='使用'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Trim(txtcash.Text) - money
txtcash.Text = mrc1.Fields(7)
txtSQL = "delete from online_info where cardno='" & txtcardno.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
达到最少上机时间
' 达到最少上机时间了
' 这里又分为固定用户和临时用户
Select Case Trim(txttype.Text)
Case "固定用户"
txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'and status='使用'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
money = Round(Val(txttime.Text) / x * w1)
txtconsume.Text = money
mrc1.Fields(7) = Val(txtcash.Text) - money
txtcash.Text = mrc1.Fields(7)
mrc1.Update
mrc1.Close
txtSQL = "delete from online_info where cardno='" & txtcardno.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
Case "临时用户"
money = Round(Val(txttime.Text) / x * w2)
txtconsume.Text = money
txtSQL = "select * from student_info where cardno='" & txtcardno.Text & "'"
Set mrc1 = ExecuteSQL(txtSQL, MsgText)
mrc1.Fields(7) = Val(txtcash.Text) - money
txtcash.Text = mrc1.Fields(7)
txtSQL = "delete from online_info where cardno='" & txtcardno.Text & "'"
End Select
4.用到的数据表
basicdata_info表:用里面的基础数据
student_info表:该表中有用户的基本信息
line_info表:下机信息要同步到这个表中
online_info表:该表用于存放正在上机的卡的信息,所以下机时要删除里面的数据
总结
下机相对于上机来说,涉及到了计算时间和消费金额的问题,开始的时候不知道怎么处理,慢慢发现需要定义一些变量用来存放数据,这样就可以调用了。同时,涉及到的表也相对多一些,但是只有理清这些表之间的关系,就没有问题的!
结语
每当接触一个新鲜事物都会觉得很难,就像米老师说的“改变的过程是痛苦的”,但是我们不要害怕,勇往直前,小伙伴,一起加油!
未完待续O(∩_∩)O~