下机 是一个相对有难度的窗体了,一开始我的思路很乱,不知道该怎么写,还要算时间,算金额,感觉很麻烦,然后看了好多大佬们的思路,画了个流程图
Dim msgText As String '查询信息名称
Dim mrc As ADODB.Recordset 'student 表
Dim txtSQL As String
Dim mrc1 As ADODB.Recordset 'onlion 表
Dim txtSQL1 As String
Dim mrc2 As ADODB.Recordset 'basicdata 表
Dim txtSQL2 As String
Dim mrc3 As ADODB.Recordset 'line 表
Dim txtSQL3 As String
If Trim(txtCardID.Text) = "" Then
MsgBox "请输入卡号!", , "提示"
txtCardID.SetFocus
Exit Sub
End If
If IsNumeric(txtCardID.Text) = False Then
MsgBox "请输入数字", , "提示"
txtCardID.Text = ""
txtCardID.SetFocus
Exit Sub
End If
txtSQL = "select * from student_info where cardno='" & txtCardID.Text & "'" & "and status='使用" & "'"
Set mrc = ExecuteSQL(txtSQL, msgText)
If mrc.EOF Then
MsgBox "卡号不存在,请重新输入", , "提示"
txtCardID.Text = ""
txtCardID.SetFocus
Exit Sub
Else
txtSQL2 = "select * from basicdata_info"
Set mrc2 = ExecuteSQL(txtSQL2, msgText)
If mrc.Fields(7) < mrc2.Fields(0) Then
MsgBox "卡内余额不足,请先充值,再下机", , "提示"
txtCardID.Text = ""
txtCardID.SetFocus
Exit Sub
End If
End If
txtSQL1 = "select * from online_info where cardno='" & txtCardID.Text & "'"
Set mrc1 = ExecuteSQL(txtSQL1, msgText)
If mrc1.EOF Then
MsgBox "该卡号没有上机!", , "提示"
txtCardID.Text = ""
txtCardID.SetFocus
Exit Sub
Else
txtType = mrc1.Fields(1)
txtStudentID = mrc1.Fields(2)
txtName = mrc1.Fields(3)
txtMajor = mrc1.Fields(4)
txtSex = mrc1.Fields(5)
txtOnlineDate = mrc1.Fields(6)
txtOnlineTime = mrc1.Fields(7)
End If
'计算消费时间
txtOfflineTime.Text = Time
txtOfflineDate.Text = Date
Dim CostDate As Long
Dim CostTime As Long
CostDate = DateDiff("n", txtOnlineDate.Text, txtOfflineDate.Text)
CostTime = DateDiff("n", txtOnlineTime.Text, txtOfflineTime.Text)
txtConsumeTime.Text = (Val(CostDate) + Val(CostTime))
'计算消费金额
If Trim(txtConsumeTime.Text) <= Val(mrc2.Fields(4)) Then
txtConsumeTime.Text = 0
txtConsumeMoney.Text = 0
Else
If Trim(txtType.Text) = "固定用户" Then
txtConsumeMoney.Text = Format(txtConsumeTime / mrc2.Fields(2) * mrc2.Fields(0), "0.00")
Else
txtConsumeMoney.Text = Format(txtConsumeTime / mrc2.Fields(2) * mrc2.Fields(1), "0.00")
End If
End If
'计算余额
txtRemainingSum.Text = Val(mrc.Fields(7)) - Val(Trim(txtConsumeMoney.Text))
txtSQL3 = "select * from line_info where cardno='" & txtCardID.Text & "'"
Set mrc3 = ExecuteSQL(txtSQL3, msgText)
mrc3.Fields(8) = Trim(txtOfflineDate.Text)
mrc3.Fields(9) = Trim(txtOfflineTime.Text)
mrc3.Fields(10) = Trim(txtConsumeTime.Text)
mrc3.Fields(11) = Trim(txtConsumeMoney.Text)
mrc3.Fields(12) = Trim(txtRemainingSum.Text)
mrc3.Update
mrc3.Close
'更新余额到student 表中
mrc.Fields(7) = Val(txtRemainingSum.Text)
mrc.Update
mrc.Close
mrc1.Delete
mrc1.Update
mrc1.Close
Exit Sub
mrc2.Close