思路
上机:判断(卡号是否为空,是否已注册,是否已退卡,余额是否充足,是否正在上机)—调动学生信息到输入框i----数据同步到online_info表中—同步到line_info表中
下机:判断—计算消费金额—计算余额—余额更新到student_info表中----删除line_info表中的信息—更新line_info表—更新online_info
代码
rem:上机
'上机时将上机卡的数据同步至online_info表中
Set mrconline = New ADODB.Recordset
onlinesql = "select * from online_info"
Set mrconline = ExecuteSQL(onlinesql, msgtext)
mrconline.AddNew
mrconline.Fields(0) = Trim(txtcardno.Text)
mrconline.Fields(1) = Trim(txttype.Text)
mrconline.Fields(2) = Trim(txtstudentno.Text)
mrconline.Fields(3) = Trim(txtname.Text)
mrconline.Fields(4) = Trim(txtdepartment.Text)
mrconline.Fields(5) = Trim(combosex.Text)
mrconline.Fields(6) = Trim(txtondate.Text)
mrconline.Fields(7) = Trim(txtontime.Text)
mrconline.Fields(8) = Trim(VBA.Environ("computer"))
lblamount.Caption = mrconline.RecordCount + 1 '显示上机人数
mrconline.Update
mrconline.Close
'上机时将数据同步到line_info表中
Set mrcline = New ADODB.Recordset
linesql = "select * from line_info"
Set mrcline = ExecuteSQL(linesql, msgtext)
mrcline.AddNew
mrcline.Fields(1) = Trim(txtcardno.Text)
mrcline.Fields(2) = Trim(txtstudentno.Text)
mrcline.Fields(3) = Trim(txtname.Text)
mrcline.Fields(4) = Trim(txtdepartment.Text)
mrcline.Fields(5) = Trim(combosex.Text)
mrcline.Fields(6) = Trim(txtondate.Text)
mrcline.Fields(7) = Trim(txtontime.Text)
mrcline.Fields(13) = "正常上机"
mrcline.Fields(13) = Trim(VBA.Environ("computer"))
mrcline.Update
mrcline.Close
MsgBox "上机成功", 48, ""
rem:下机
OnTime = mrconline.Fields(7)
offtime = Format(Now(), "yyyy-MM-dd H:mm:ss") '获取下机时间日期格式
linetime = Val(DateDiff("n", OnTime, offtime)) '计算上机时间 n代表返回的分钟,datediff返回一个指定两个特定日期之间的时间段数目的 Variant (Long)。
'计算消费金额
basicdatasql = "select * from basicdata_info"
Set mrcbasicdata = ExecuteSQL(basicdatasql, msgtext)
'消费时间小于准备时间,则金额为0
If Trim(linetime) < Val(Trim(mrcbasicdata.Fields(4))) Then
txtconsume.Text = 0
txtconsumetime.Text = 0
Else
' txtconsume.Text = Val(consumetime) - Val(mrcbasicdate.Fields(4))
txtconsumetime.Text = linetime
If Trim(txttype.Text) = "固定用户" Then
txtconsume.Text = Format(linetime / mrcbasicdata.Fields(2) * mrcbasicdata.Fields(0), "0.00")
Else
txtconsume.Text = Format(linetime / mrcbasicdata.Fields(2) * mrcbasicdata.Fields(1), "0.00")
End If
stusql = "select * from student_info"
Set mrcstu = ExecuteSQL(stusql, msgtext)
'计算余额
txtcash.Text = Val(mrcstu.Fields(7)) - Val(Trim(txtconsume.Text))
'将余额更新到student表中
mrcstu.Fields(7) = Val(Trim(txtcash.Text))
mrcstu.Update
mrcstu.Close
End If
'删除line表中的信息
linesql = "select * from line_info"
Set mrcline = ExecuteSQL(linesql, msgtext)
' On Error GoTo 1:
'
' mrcline.MoveFirst
' Call viewdate
'
' mybookmark = mrcline.Bookmark '对当前记录进行标记
' mcclean = True '可编辑状态
If mrcline.EOF And mrcline.BOF Then
MsgBox "无记录"
Exit Sub
Else
mrcline.Delete
mrcline.Update
mrcline.Close
End If
'更新line表
linesql = "select * from line_info where cardno='" & txtcardno.Text & "'"
Set mrcline = ExecuteSQL(linesql, msgtext)
With mrcline
.AddNew
.Fields(1) = Trim(txtcardno.Text)
.Fields(2) = Trim(txtstudentno.Text)
.Fields(3) = Trim(txtname.Text)
.Fields(4) = Trim(txtdepartment.Text)
.Fields(5) = Trim(combosex.Text)
.Fields(6) = mrconline!ondate
.Fields(7) = mrconline!OnTime
.Fields(8) = Trim(txtoffdate.Text)
.Fields(9) = Trim(txtofftime.Text)
.Fields(10) = Trim(txtconsumetime.Text)
.Fields(11) = Trim(txtconsume.Text)
.Fields(12) = Trim(txtcash.Text)
.Fields(13) = "正常上机"
.Fields(14) = Trim(VBA.Environ("computer"))
' !computer = VBA.Environ("computer")
' !offdate = Trim(txtoffdate.Text)
' !offtime = Trim(txtofftime.Text)
' !consumetime = Trim(txtconsumetime.Text)
'
' !cash = Trim(txtcash.Text)
' !Status = "正常上机"
.Update
.Close
End With
'更新online表
mrconline.Delete
mrconline.Update
mrconline.Close
rem:显示上机人数
'显示正在上机人数
onlinesql = "select * from online_info"
Set mrconline = ExecuteSQL(onlinesql, msgtext)
If mrconline.EOF Then
lblamount.Caption = 0
Else
lblamount.Caption = mrconline.RecordCount
End If
总结
发现的源动力来自不将就