机房收费重头戏

    敲机房最头痛的就是结账了,思路不清晰,代码就无法实现,想了好几天才完成。    

    首先要明确的是对象,即:谁给谁结账。 

    系统涉及三个级别的用户:一般用户,管理员,操作员。首先排除权限最低的一般用户,不难想出:管理员给操作员结账。

    接下来就是要明确界面要达到的预期效果。

   通过MsFlexGrid的单击事件,选择操作员,显示操作员信息。

    然后分模块显示需要的信息,这里用到了选项卡控件。

   

    接下来是对选项卡要显示的内容,通过代码实现。

    就拿购卡来说吧,需要我们调的是student_info表,而且限定条件:status="未结账";userid=选中的操作员。这样才能保证调出的记录是正确的、


<strong><span style="font-family:KaiTi_GB2312;font-size:18px;">Private Sub SSTab1_Click(PreviousTab As Integer)
    Select Case SSTab1.Tab
    Case 0
        txtSQL = "select * from student_info where userid='" & Trim(cmbid.Text) & "'" and status='未结账' "
        Set mrc = ExecuteSQL(txtSQL, msgtext)
        With MSFlexGrid1
        .Rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "学号"
        .TextMatrix(0, 1) = "卡号"
        .TextMatrix(0, 2) = "日期"
        .TextMatrix(0, 3) = "时间"
            While Not mrc.EOF
                .Rows = .Rows + 1
                .CellAlignment = 4
                .TextMatrix(.Rows - 1, 0) = Trim(mrc!studentno)
                .TextMatrix(.Rows - 1, 1) = Trim(mrc!cardno)
                .TextMatrix(.Rows - 1, 2) = Trim(mrc!Date)
                .TextMatrix(.Rows - 1, 3) = Trim(mrc!Time)
                mrc.MoveNext
        
            Wend
        mrc.Close
        End With                        </span></strong>                                                              
         充值、临时用户显示跟购卡类似。

   最后就是结账了。

售卡张数=注册卡的数量

退卡张数=退卡的数量

总售卡数=售卡总数-退卡总数

充值金额=符合条件的所有充值记录的总和

退卡金额=符合条件的所有退卡记录的总和

应收金额=充值金额-退卡金额

    代码实现:

'售卡张数
        txtSQL = "select count(cardno) from student_Info where UserID='" & Trim(cmbid.Text) & "' and ischeck = '" & "未结账" & "'"
        Set mrc = ExecuteSQL(txtSQL, msgtext)
        If mrc.EOF And mrc.BOF Then
            Rcharge = 0
        Else
            Rcharge = mrc.Fields(0)
        End If
        txtsalenum.Text = mrc.Fields(0)
  
        '退卡张数
        txtSQL = "select count(cardno) from cancelcard_Info where UserID='" & Trim(cmbid.Text) & "' and status= '" & "未结账" & "'"
        Set mrc = ExecuteSQL(txtSQL, msgtext)
        If MSFlexGrid1.Rows = 1 Then
            Tuicharge = 0
        Else
            Tuicharge = mrc.Fields(0)
        End If
            txtcancelcard.Text = mrc.Fields(0)
            mrc.Close
        '售卡总张数
        txtallsellcard.Text = Rcharge - Tuicharge
         '充值金额
        txtSQL6 = "select sum(addmoney) from recharge_Info where UserID='" & Trim(cmbid.Text) & "' "
        Set mrc6 = ExecuteSQL(txtSQL6, MsgText6)
            If mrc6.EOF Then
                RchargeMoney = 0
            Else
                RchargeMoney = mrc6.Fields(0)
            End If
            txtrechargecash.Text = RchargeMoney
        '退卡
        txtSQL5 = "select sum(CancelCash ) from cancelcard_info where UserID='" & Trim(cmbid.Text) & "'"
        Set mrc5 = ExecuteSQL(txtSQL5, MsgText5)
                
        If IsNull(Trim(mrc5.Fields(0))) Then
            txtcancelcash.Text = 0
        Else
            txtcancelcash.Text = Trim(mrc5.Fields(0))
        End If
       '应收总金额=充值金额-退卡金额
        txtallcash.Text = RchargeMoney - TuichargeMoney
'结账的同时要更改数据库用户结账状态,
   txtSQL = "select * from student_Info where UserID='" & Trim(cmbid.Text) & "'" & " and Ischeck = '" & "未结账" & "'"
   Set objrs = ExecuteSQL(txtSQL, msgtext)

   Do While objrs.EOF = False
      objrs!ischeck = "已结账"
      objrs.MoveNext
   Loop
   objrs.Close
  
txtsql1 = "select * from cancelcard_Info where UserID='" & Trim(cmbid.Text) & "'" & " and Ischeck = '" & "未结账" & "'"
  Set objrs1 = ExecuteSQL(txtSQL, msgtext)
  If Not objrs1.EOF Then
 
    objrs1!ischeck = "已结账"
    objrs1.MoveNext
  End If
   objrs1.Close
   
   '将一些数据存入到日结账单中:上期剩余金额,充值金额,消费金额,退卡金额,汇总金额,日期
   '上期剩余金额
   txtSQL = "select * from CheckDay_Info"
   Set objrs = ExecuteSQL(txtSQL, msgtext)
   objrs.MoveLast
   lastmoney = objrs.Fields(4)
   objrs.MoveFirst

   '写入一条新结账记录
   objrs.AddNew
   objrs.Fields(0) = lastmoney
   objrs.Fields(1) = Trim(txtrechargecash.Text)
   objrs.Fields(2) = Trim(txtrechargecash.Text) - Trim(txtcancelcash.Text)
   objrs.Fields(3) = Trim(txtcancelcash.Text)
   objrs.Fields(4) = lastmoney
   objrs.Fields(5) = Date

   objrs.Update
   objrs.Close

   MsgBox "结账成功", vbOKOnly + vbExclamation, "提示"
    在做后面的周结账的时候,会调一段时间的结账记录,为了方便起见,我是把结账记录直接也同步到了checkweek_info表中,即:在此处编写代码,实现checkweek_info表更新。
    小结

    思路是灯,照亮了敲代码之路!

    无需畏惧和烦躁,就这么一直努力着,一定能出现自己想要的结果!



posted @ 2014-09-07 14:28  幻想泡沫  阅读(139)  评论(0编辑  收藏  举报