前言:前面的文章提过,机房收费系统的三大重点:组合查询、上下机和结账,那么今天的文章就迎来了三难点的最后一位:结账。
结账的功能就是对一天内流入的金额与流出的金额进行相减(当然实际过程要比这复杂得多,后面我会详细讲解),所剩余的就是这段时间内的收入。我所设计系统的逻辑是:点击相应操作员后,在“结账”栏目中出现各种数据,如充值金额、上机收费金额、上期余额、退卡金额…点击结账后,各项数据被放入到日结账表中,完成结账。若今天重复结账,则以最新的一次覆盖上一次,但不会覆盖其他日期的数据。
其中略微复杂的就是对收费合计的计算。计算公式:今日充值+今日消费-今日退卡
流程图:
代码部分:
Option Explicit
Dim mru As ADODB.Recordset
Dim mrcs As ADODB.Recordset
Dim mrcsb As ADODB.Recordset
Dim mrcc As ADODB.Recordset
Dim mrcc1 As ADODB.Recordset
Dim mrcr As ADODB.Recordset
Dim mrcd As ADODB.Recordset
Dim mrcsum As ADODB.Recordset
Dim mrcst As ADODB.Recordset
Dim mrbd As ADODB.Recordset
Dim txtSQL$
Dim MsgText$
Private Sub comboUserName_Click()
txtSQL = "select * from user_info where userid='" & Trim(comboUserName.Text) & "'"
Set mru = ExecuteSQL(txtSQL, MsgText)
'点击时txtUserName随着comboUserName变化
txtUserName.Text = mru!UserName
'计算购卡张数
txtSQL = "select * from student_info where userid='" & Trim(comboUserName.Text) & "' and ischeck='" & "未结账" & "' and date='" & Date & "'"
Set mrcs = ExecuteSQL(txtSQL, MsgText)
If mrcs.EOF Then
txtBuyCard.Text = 0
Else
txtBuyCard.Text = mrcs.RecordCount
End If
'计算上期余额
txtSQL = "select allcash from checkday_info where date='" & Date - 1 & "'"
Set mrcc1 = ExecuteSQL(txtSQL, MsgText)
If mrcc1.EOF Then
txtYesCash.Text = 0
Else
txtYesCash.Text = mrcc1.Fields(0)
End If
'计算退卡张数
txtSQL = "select * from