【机房收费系统】---结账

一、查看某操作员的工作数据信息


代码:

Private Sub comboUserName_Click()

    Dim txtSQL As String
    Dim MsgText As String
    Dim mrc As ADODB.Recordset
    
    '通过用户名,显示真实姓名
    txtSQL = "select * from User_Info where UserID='" & Trim(comboUserName.Text) & "'"
    Set mrc = ExecuteSQL(txtSQL, MsgText)
    
    txtTrueName.Text = mrc.Fields(3)
    mrc.Close
    
   '购卡
    If SSTab1.Tab = 0 Then

        With MSHFlexGrid1
            .CellAlignment = 4
            .Rows = 1
            .TextMatrix(0, 0) = "学号"
            .TextMatrix(0, 1) = "卡号"
            .TextMatrix(0, 2) = "日期"
            .TextMatrix(0, 3) = "时间"
            
        '选择student表中用户名为combo且未结账的数据
        txtSQL = "select * from student_Info where UserID='" & _
        Trim(comboUserName.Text) & "'and Ischeck='" & "未结账" & "'"
        Set mrcS = ExecuteSQL(txtSQL, MsgText)
                
        Do While Not mrcS.EOF
            .Rows = .Rows + 1
            .CellAlignment = 4
            .TextMatrix(.Rows - 1, 0) = Trim(mrcS.Fields(1) & "")
            .TextMatrix(.Rows - 1, 1) = Trim(mrcS.Fields(0) & "")
            .TextMatrix(.Rows - 1, 2) = Trim(mrcS.Fields(12) & "")
            .TextMatrix(.Rows - 1, 3) = Trim(mrcS.Fields(13) & "")
            mrcS.MoveNext
        Loop
        End With
    End If
    
    '充值
    If SSTab1.Tab = 1 Then
        With MSHFlexGrid2
            .CellAlignment = 4
            .Rows = 1
            .TextMatrix(0, 0) = "学号"
            .TextMatrix(0, 1) = "卡号"
            .TextMatrix(0, 2) = "充值金额"
            .TextMatrix(0, 3) = "日期"
            .TextMatrix(0, 4) = "时间"
        
        '选择recharge表中用户名为combo、未结账的数据
        txtSQL = "select * from ReCharge_Info where UserID='" & Trim(comboUserName.Text) & _
        "' and status='" & "未结账" & "'"
        Set mrcR = ExecuteSQL(txtSQL, MsgText)
        Do While Not mrcR.EOF
            .Rows = .Rows + 1
            .CellAlignment = 4
            .TextMatrix(.Rows - 1, 0) = Trim(mrcR.Fields(1)) & ""
            .TextMatrix(.Rows - 1, 1) = Trim(mrcR.Fields(2)) & ""
            .TextMatrix(.Rows - 1, 2) = Trim(mrcR.Fields(3)) & ""
            .TextMatrix(.Rows - 1, 3) = Trim(mrcR.Fields(4)) & ""
            .TextMatrix(.Rows - 1, 4) = Trim(mrcR.Fields(5)) & ""
            mrcR.MoveNext
        Loop
        End With
    End If
        
    '退卡
    If SSTab1.Tab = 2 Then
  
        With MSHFlexGrid3
            .CellAlignment = 4
            .Rows = 1
            .TextMatrix(0, 0) = "学号"
            .TextMatrix(0, 1) = "卡号"
            .TextMatrix(0, 2) = "退卡金额"
            .TextMatrix(0, 3) = "日期"
            .TextMatrix(0, 4) = "时间"
    
        '选择cancelcard表中用户名为combo、未结账的数据
        txtSQL = "select * from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
        "'and status='" & "未使用" & "'"
        Set mrcc = ExecuteSQL(txtSQL, MsgText)
    
        Do While Not mrcc.EOF
            .Rows = .Rows + 1
            .CellAlignment = 4
            .TextMatrix(.Rows - 1, 0) = Trim(mrcc.Fields(0) & "")
            .TextMatrix(.Rows - 1, 1) = Trim(mrcc.Fields(1) & "")
            .TextMatrix(.Rows - 1, 2) = Trim(mrcc.Fields(2) & "")
            .TextMatrix(.Rows - 1, 3) = Trim(mrcc.Fields(3) & "")
            .TextMatrix(.Rows - 1, 4) = Trim(mrcc.Fields(4) & "")
            mrcc.MoveNext
        Loop
        End With
    End If
  
    '临时用户
    If SSTab1.Tab = 3 Then
  
        With MSHFlexGrid4
            .CellAlignment = 4
            .Rows = 1
            .TextMatrix(0, 0) = "学号"
            .TextMatrix(0, 1) = "卡号"
            .TextMatrix(0, 2) = "日期"
            .TextMatrix(0, 3) = "时间"
    
        '选择学生表中用户名为combo,类型为临时用户,且未结账的用户
        txtSQL = "select * from student_Info where UserID='" & Trim(comboUserName.Text) & _
        "'and type='" & "临时用户" & "'and Ischeck='" & "未结账" & "'"
        Set mrcS = ExecuteSQL(txtSQL, MsgText)
    
        Do While Not mrcS.EOF
            .Rows = .Rows + 1
            .CellAlignment = 4
            .TextMatrix(.Rows - 1, 0) = Trim(mrcS.Fields(1) & "")
            .TextMatrix(.Rows - 1, 1) = Trim(mrcS.Fields(0) & "")
            .TextMatrix(.Rows - 1, 2) = Trim(mrcS.Fields(12) & "")
            .TextMatrix(.Rows - 1, 3) = Trim(mrcS.Fields(13) & "")
            mrcS.MoveNext
        Loop
        End With
    End If
              
              
    '汇总
    If SSTab1.Tab = 4 Then
        '售卡数量
        txtSQL = "select * from student_Info where UserID='" & Trim(comboUserName.Text) & _
        "' and Ischeck='" & "未结账" & " ' and status='" & "使用" & "'"
        Set mrcS = ExecuteSQL(txtSQL, MsgText)
        
        If mrcS.RecordCount = 0 Then
            txtSellCard.Text = "0"
        Else
            txtSellCard.Text = mrcS.RecordCount
        End If
        
        '退卡数量
        txtSQL = "select * from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
        "'and status='" & "未使用" & "'"
        Set mrcc = ExecuteSQL(txtSQL, MsgText)
        
        If mrcc.RecordCount = 0 Then
            txtRtnNum.Text = "0"
        Else
            txtRtnNum.Text = mrcc.RecordCounttuika
        End If
        
        '退卡金额=该操作员操作的所有用户退卡金额的总和
        txtSQL = "select sum(CancelCash) from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & _
        "'and status='" & "未使用" & "'"
        Set mrcc = ExecuteSQL(txtSQL, MsgText)
        
        If IsNull(Trim(mrcc.Fields(0))) Then
            txtRtnSum.Text = "0"
        Else
            txtRtnSum.Text = Val(mrcc.Fields(0))
        End If
        
        '充值金额(不区分临时用户和固定用户)
        txtSQL = "select sum(addmoney) from Recharge_Info where UserID='" & Trim(comboUserName.Text) & _
        "'and status='" & "未结账" & "'"
        Set mrcR = ExecuteSQL(txtSQL, MsgText)
        
        If IsNull(Trim(mrcR.Fields(0))) Then
            txtRechargeSum.Text = "0"
        Else
            txtRechargeSum.Text = Val(mrcR.Fields(0))
        End If
        
        '临时收费金额=临时用户注册金额
        txtSQL = "select * from student_Info where UserID = '" & Trim(comboUserName.Text) & "'and Ischeck='未结账' and type='临时用户'"
        Set mrcS = ExecuteSQL(txtSQL, MsgText)
        
        '------若所有临时用户已结账
        If mrcS.EOF = True Then
            MsgBox "没有临时用户需要结账", , "提示"

            Dim ctl As Control

            '删除所有text文本框内容
            For Each ctl In Controls
                If TypeOf ctl Is TextBox Then ctl.Text = ""
            Next ctl
                Else
            
        End If
        '------
        
        txtTemporarySum.Text = Val(Trim(mrcS.Fields(7)))

        '总售卡数=售卡数量-退卡数量
        txtSaleCardNumber.Text = Val(txtSellCard.Text) - Val(txtRtnNum.Text)
        
        '应收金额=充值金额-退卡金额
        txtSum.Text = Val(txtRechargeSum.Text) - Val(txtRtnSum.Text)
        
    End If
         
End Sub


二、结账

结账的思路很简单,就两件事儿:

1.更新日结:计算日结账单中所需数据金额,并更新到表中;

                    1)若结过帐:更新表中数据;

                    2)未结过帐:添加新数据。

2.更新表


代码:

Private Sub cmdCheckout_Click()

    Dim RemainCash As String
    Dim RechargeCash As String
    Dim ConsumeCash As String
    Dim CancelCash As String
    Dim AllCash As String
    
    If comboUserName = "" Then
        MsgBox "请选择操作员后再结账!", vbOKOnly, "提示"
        Exit Sub
    End If
    
'更新日结
    '计算上期充值卡余额
    txtSQL = "select sum(cash) from student_Info where UserID='" & Trim(comboUserName.Text) & "'and ischeck='" & "未结账" & "'"
    Set mrcS = ExecuteSQL(txtSQL, MsgText)
    
    If IsNull(mrcS.Fields(0)) Then
        RemainCash = "0"
    Else
        RemainCash = mrcS.Fields(0)
    End If
    
    '充值金额
    txtSQL = "select sum(addmoney) from Recharge_Info where status='未结账'and date='" & Date & "'"
    Set mrcR = ExecuteSQL(txtSQL, MsgText)
    
    If IsNull(mrcR.Fields(0)) = True Then
        RechargeCash = "0"
    Else
        RechargeCash = mrcR.Fields(0)
    End If
    
    '从Line表计算当日消费金额
    txtSQL = "select sum(consume) from Line_Info where offdate='" & Date & "'"
    Set mrcL = ExecuteSQL(txtSQL, MsgText)
    If IsNull(mrcL.Fields(0)) Then
        ConsumeCash = "0"
    Else
        ConsumeCash = mrcL.Fields(0)
    End If
    
    '更新计算当天的退卡金额,不会出现未结账的操作员
    txtSQL = "select sum(CancelCash) from CancelCard_Info where date='" & Date & "'and status='未使用'"
    Set mrcc = ExecuteSQL(txtSQL, MsgText)
    
    If IsNull(mrcc.Fields(0)) Then
        CancelCash = "0"
    Else
        CancelCash = mrcc.Fields(0)
    End If
    
   '更新到日结账单
    txtSQL = "select * from CheckDay_Info where  date='" & Date & "'"
    Set mrcDay = ExecuteSQL(txtSQL, MsgText)
        
    '若结过账,在原有基础上更新
    If Not mrcDay.EOF Then
        mrcDay!RemainCash = Val(RemainCash) + mrcDay!RemainCash
        mrcDay!RechargeCash = Val(RechargeCash) + mrcDay!RechargeCash
        mrcDay!ConsumeCash = Val(ConsumeCash) + mrcDay!ConsumeCash
        mrcDay!CancelCash = Val(CancelCash) + mrcDay!CancelCash
        mrcDay!AllCash = Val(RemainCash) + Val(RechargeCash) - Val(ConsumeCash) - Val(CancelCash) + mrcDay!AllCash
        mrcDay!Date = Date
        mrcDay.Update
        mrcDay.Close
        mrcL.Close
        mrcS.Close
        
    Else
    '若未结过账,添加新数据
        mrcDay.AddNew
        mrcDay!RemainCash = Val(RemainCash)
        mrcDay!RechargeCash = Val(RechargeCash)
        mrcDay!ConsumeCash = Val(ConsumeCash)
        mrcDay!CancelCash = Val(CancelCash)
        mrcDay!AllCash = Val(RemainCash) + Val(RechargeCash) - Val(CancelCash)
        mrcDay!Date = Date
        mrcDay.Update
        mrcS.Close
        mrcL.Close
        mrcDay.Close
        End If
         
    '更新学生表
    txtSQL = "select * from student_Info where UserID='" & Trim(comboUserName.Text) & "'and Ischeck='" & "未结账" & "'"
    Set mrcS = ExecuteSQL(txtSQL, MsgText)
    Do While Not mrcS.EOF
        mrcS!ischeck = "结账"
        mrcS.Update
        mrcS.MoveNext
    Loop
    mrcS.Close
    
    '更新充值表
    txtSQL = "select * from Recharge_Info where UserID='" & Trim(comboUserName.Text) & "'and status='" & "未结账" & "'"
    Set mrcR = ExecuteSQL(txtSQL, MsgText)
    Do While Not mrcR.EOF
        mrcR!Status = "结账"
        mrcR.Update
        mrcR.MoveNext
    Loop
    mrcR.Close
    
    '更新退卡表
    txtSQL = "select * from CancelCard_Info where UserID='" & Trim(comboUserName.Text) & "'and status='" & "未结账" & "'"
    Set mrcc = ExecuteSQL(txtSQL, MsgText)
    Do While Not mrcc.EOF
        mrcc!ischeck = "结账"
        mrcc.Update
        mrcc.MoveNext
    Loop
    mrcc.Close
    
    '清空文本框显示的信息
    Dim ctr1 As Control
    For Each ctr1 In Me.Controls
        If TypeOf ctr1 Is TextBox Then
            ctr1.Text = ""
        End If
    Next
      
    MsgBox "结账成功!", vbOKOnly, "提示"
    Me.Hide
                
End Sub



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨幂等

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值