机房——管理员——结账

今天分享一下结账窗体
我们在敲这个窗体之前,要先搞清楚这个窗体的主要功能是什么?为了谁而服务?
从题目就可以看出,这是个结账窗体,但是是结谁的账呢?结用户的帐,还是结员工的账?还是老板结算一天的账目,查看盈利额?从主窗体上方菜单栏可以看出,这个结账的功能是属于管理员的,也就是这项功能是为了管理员而设定的,操作员不能参与结账。再从窗体的两个下拉框可以看出,都是围绕着操作员而展开的。那就清楚了,是管理员要给操作员结账
在这里插入图片描述
接下来,就要一步步的实现结账功能了
首先,就是要选择操作员用户名和操作员的姓名,那么,怎样才能在打开窗体的时候就能显示所有的操作员用户名呢?在这个地方我卡了一下,我设置下拉框的Chick事件,当单机下拉框时,连接数据库,显示所有的操作员用户名,可是没能调用成功,数据不显示。经过思考后,显示操作员用户名和操作员真实姓名需要两步来完成。第一步:Form事件,打开Form窗体时连接数据库调用操作员用户名。第二步:操作员下拉框的Click事件,当选择操作员用户名时调用数据库,选择对应操作员姓名。
调用操作员代码展示

'下拉菜单连接数据库,先连数据库调操作员用户名。
    txtsql = "select * from user_Info where Level='操作员'"      '查询
    Set mrc3 = ExecuteSQL(txtsql, msgtext)
    '在下来菜单中显示所有userid
    Do While mrc3.EOF = False
        comboUserName.AddItem mrc3.Fields(0)     '操作员用户名
        mrc3.MoveNext
    Loop

显示操作员真实姓名代码

If comboUserName.Text <> "" Then	   '若操作员姓名不为空时
        SSTab1.Enabled = True		
    End If
    txtsql = "select * from user_info where userID=  '" & comboUserName.Text & " '"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    comboTrueName.Text = mrc.Fields(3)

接下来便是重头戏结账了,当选择操作员后,便会显示这个操作员的购卡记录、充值记录、退卡记录
注册的临时用户信息、以及汇总,如下图
在这里插入图片描述
除了汇总之外,其他几项就是连接数据库,调用数据,分别显示在MSHFlexGrid控件上,注意不同的操作员有不同的操作记录,千万不能调错了,不然结账就没有意义了。
以下为调用操作用不同工作记录的代码

’显示购卡记录

With MSHFlexGrid1
        .rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡号"
        .TextMatrix(0, 1) = "学号"
        .TextMatrix(0, 2) = "日期"
        .TextMatrix(0, 3) = "时间"
        
        txtsql = "select * from student_info where userID=  '" & comboUserName.Text & " '"
        Set mrc = ExecuteSQL(txtsql, msgtext)
        
         Do While mrc.EOF = False
            .rows = .rows + 1
            .CellAlignment = 4
            .ColAlignment = 4
            .TextMatrix(.rows - 1, 0) = Trim(mrc!cardno)
            .TextMatrix(.rows - 1, 1) = Trim(mrc!studentno)
            .TextMatrix(.rows - 1, 2) = Trim(mrc!Date)
            .TextMatrix(.rows - 1, 3) = Trim(mrc!Time)
        
             mrc.MoveNext    '移动到下一条记录
            Loop
        End With   

’显示充值记录

With MSHFlexGrid2
        .rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡号"
        .TextMatrix(0, 1) = "学号"
        .TextMatrix(0, 2) = "充值金额"
        .TextMatrix(0, 3) = "日期"
        .TextMatrix(0, 4) = "时间"
        
         txtsql = "select * from recharge_info where userID=  '" & comboUserName.Text & " '"
         Set mrc1 = ExecuteSQL(txtsql, msgtext)
         
         Do While mrc1.EOF = False
            .rows = .rows + 1
            .CellAlignment = 4
            .ColAlignment = 4
            .TextMatrix(.rows - 1, 0) = Trim(mrc1!cardno)
            .TextMatrix(.rows - 1, 1) = Trim(mrc1!studentno)
            .TextMatrix(.rows - 1, 2) = Trim(mrc1!addmoney)
            .TextMatrix(.rows - 1, 3) = Trim(mrc1!Date)
            .TextMatrix(.rows - 1, 4) = Trim(mrc1!Time)
            
             mrc1.MoveNext    '移动到下一条记录
            Loop
        End With

’显示退卡记录

With MSHFlexGrid3
        .rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡号"
        .TextMatrix(0, 1) = "学号"
        .TextMatrix(0, 2) = "日期"
        .TextMatrix(0, 3) = "时间"
        .TextMatrix(0, 4) = "退卡金额"
        
         txtsql = "select * from cancelcard_info where userID=  '" & comboUserName.Text & " '"
         Set mrc2 = ExecuteSQL(txtsql, msgtext)
         
         Do While mrc2.EOF = False
            .rows = .rows + 1
            .CellAlignment = 4
            .ColAlignment = 4
            .TextMatrix(.rows - 1, 0) = Trim(mrc2!cardno)
            .TextMatrix(.rows - 1, 1) = Trim(mrc2!studentno)
            .TextMatrix(.rows - 1, 2) = Trim(mrc2!Date)
            .TextMatrix(.rows - 1, 3) = Trim(mrc2!Time)
            .TextMatrix(.rows - 1, 4) = Trim(mrc2!cancelcash)
            
             mrc2.MoveNext    '移动到下一条记录
            Loop
        End With   

‘显示 临时用户记录

With MSHFlexGrid4
        .rows = 1
        .CellAlignment = 4
        .TextMatrix(0, 0) = "卡号"
        .TextMatrix(0, 1) = "学号"
        .TextMatrix(0, 2) = "日期"
        .TextMatrix(0, 3) = "时间"
       
        
         txtsql = "select * from student_info where UserID='" & Trim(comboUserName.Text) & "' and type = '临时用户' "
         Set mrc = ExecuteSQL(txtsql, msgtext)
         
         Do While mrc.EOF = False
            .rows = .rows + 1
            .CellAlignment = 4
            .ColAlignment = 4
            .TextMatrix(.rows - 1, 0) = Trim(mrc!cardno)
            .TextMatrix(.rows - 1, 1) = Trim(mrc!studentno)
            .TextMatrix(.rows - 1, 2) = Trim(mrc!Date)
            .TextMatrix(.rows - 1, 3) = Trim(mrc!Time)
            
            
             mrc.MoveNext    '移动到下一条记录
            Loop
        
        End With

接下来便是汇总窗体
在这里插入图片描述
汇总窗体中涉及几个概念
售卡张数:该操作员的所有售卡张数总和(未结账的)
退卡张数:该操作员经手的退卡数(未结账的)
充值金额:该操作员充值的金额总数(未结账的)
临时收费金额:该操作员经手的临时用户充值的金额总数(未结账的)
退卡金额:该操作员经手的退卡金额总数(未结账的)
总售卡数:售卡张数-退卡张数(未结账的)
应收金额:充值金额-退款金额(未结账的)

注意:汇总的所有数据都是应该是未结账的,已结账的不计入汇总数据
汇总部分代码

 '汇总
   
    '售卡数量

    txtsql = "select * from student_Info where UserID='" & Trim(comboUserName.Text) & "'"
             
    Set mrc = ExecuteSQL(txtsql, msgtext)
 
    If mrc.RecordCount = 0 Then
        txtSellCardSum.Text = "0"
    Else
        txtSellCardSum.Text = mrc.RecordCount
    End If
 
    '退卡金额
    
    '查询语句中运用函数时,数据库建立虚拟表得出查询数据,最后将虚拟表中数据赋值到VB控件中
    txtsql = "select sum(CancelCash) from cancelcard_info where UserID='" & Trim(comboUserName.Text) & "' and status= '" & "未结账" & "'"
    Set mrc2 = ExecuteSQL(txtsql, msgtext)
    
     If IsNull(Trim(mrc2.Fields(0))) Then
        txtBackCardMoney.Text = "0"
    Else
        txtBackCardMoney.Text = Val(mrc2.Fields(0))
    End If

    '退卡张数
     txtsql = "select * from cancelcard_info where UserID='" & Trim(comboUserName.Text) & "' and status= '" & "未结账" & "'"
     Set mrc2 = ExecuteSQL(txtsql, msgtext)
            
     If mrc2.RecordCount = 0 Then
        txtBackCardSum.Text = "0"
     Else
        txtBackCardSum.Text = mrc2.RecordCount
    End If
         
    '总售卡数 = 售卡张数-退卡张数
    
     txtSellCardActual = txtSellCardSum.Text - txtBackCardSum.Text
 

    '充值金额
    txtsql = "select sum(addmoney) from recharge_info where UserID='" & Trim(comboUserName.Text) & "'"
    Set mrc1 = ExecuteSQL(txtsql, msgtext)
    
     If IsNull(Trim(mrc1.Fields(0))) Then
        txtRecharge.Text = "0"
    Else
        txtRecharge.Text = Val(mrc1.Fields(0))
    End If

    '应收金额 = 充值金额-退款金额
    txtCollectMoney = txtRecharge - txtBackCardMoney
    
    '临时金额
    txtsql = "select * from student_info where UserID='" & Trim(comboUserName.Text) & "' and type= '" & "临时用户" & "'"
    Set mrc = ExecuteSQL(txtsql, msgtext)
    
    If mrc.EOF = True Then
         txtTemRecharge = "0"
    Else
        txtTemRecharge = mrc.Fields(7)
    End If

以上便为结账窗体的正整个执行步骤。
后期陆续更新,欢迎大家评论区留言!

猜你喜欢

转载自blog.csdn.net/qq_42758288/article/details/84979897