概述
机房收费系统最难的是什么?其实作到今天我才明白一些,数据库的调用、组合查询、上下机。其他方面都还是很简单的,特别是跟学生系统差不多。
退卡也是如此,最麻烦的我感觉是数据库的调用、结账。因为退卡的时候需要将之前的所有打开的表都要用到,而且还需要将已经消费的卡进行结算。所以就不难看出难点在哪。下面我先从思路上开始顺。
流程图
1.通过流程图可以清晰的看到先判断各控件是否为空;
2.然后查找数据表;
3.更新数据表。
主要代码
Private Sub cmdOK_Click()
Dim mrc As ADODB.Recordset 'User表
Dim msgtext As String
Dim txtSQL As String
Dim Stumrc As ADODB.Recordset 'student表
Dim StuMsgText As String
Dim StutxtSQL As String
Dim mrc3 As ADODB.Recordset 'cancelcard_info 表
Dim MsgText3 As String
Dim txtSQL3 As String
If Not Testtxt(txtCardNo.Text) Then
MsgBox "请输入卡号", vbOKOnly, "提示"
txtCardNo.SetFocus
Exit Sub
End If
StutxtSQL = "select*from student_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set Stumrc = ExecuteSQL(StutxtSQL, StuMsgText)
On Error GoTo 1:
If Trim(Stumrc.Fields(0)) <> Trim(txtCardNo.Text) Then ''判断卡号是否存在,是否停用,是否正在上机
MsgBox "该用户不存在!", vbOKOnly, "提示"
txtCardNo.SetFocus
Else
StutxtSQL = "select*from student_info"
Set Stumrc = ExecuteSQL(StutxtSQL, StuMsgText)
If Stumrc.Fields(10) = "不使用" Then
MsgBox "该卡已经停用!", vbOKOnly, "提示"
txtCardNo.SetFocus
Else
txtSQL = "select*from User_info"
Set mrc = ExecuteSQL(txtSQL, msgtext)
StutxtSQL = "select*from student_info where cardno='" & Trim(txtCardNo.Text) & "'"
Set Stumrc = ExecuteSQL(StutxtSQL, StuMsgText)
txtSQL3 = "select*from cancelcard_info"
Set mrc3 = ExecuteSQL(txtSQL, msgtext)
txtReturn.Text = Stumrc.Fields(7)
Text3.Text = Text3.Text & vbCrLf & "退卡卡号:" & Trim(txtCardNo.Text)
Text3.Text = Text3.Text & vbCrLf & "应退款余额:" & Stumrc.Fields(7) '即“Chr(13) & Chr(10)”(回车符与换行符连接在一起),是换行的意思
Text3.Text = Text3.Text & vbCrLf & "退款日期:" & Date
Text3.Text = Text3.Text & vbCrLf & "退款时间:" & Time
Text3.Text = Text3.Text & vbCrLf & "退款老师:" & userid
mrc3.AddNew
mrc3.Fields(0) = Stumrc.Fields(1)
mrc3.Fields(1) = txtCardNo.Text
mrc3.Fields(2) = Stumrc.Fields(7)
mrc3.Fields(3) = Date
mrc3.Fields(4) = Time
mrc3.Fields(5) = userid
mrc3.Fields(6) = "未结账"
mrc3.Update
mrc3.Fields(10) = "不使用"
Stumrc.Update
mrc3.Close
Stumrc.Close
MsgBox "退卡成功!", vbOKOnly, "提示"
Me.Hide
End If
End If
1:
If Err = 3021 Then
MsgBox "该卡号不存在,请重新输入", vbOKOnly, "提示"
End If
End Sub