机房收费系统 之 结账

结账,顾名思义就是把钱算一下。
  这的结账不是给每一个卡号结账,而是给一个操作员结账,算一下这个操作员一共卖卡张数,退卡张数,实收金额,应收金额等等。
结账的界面是这个样子的,其中用到一个选项卡

       这个窗体相比较而言还有有点难度的。别看一个小小的操作员用户名,它不是一般的Combo控件,对于一般的Combo控件下拉菜单中的内容,  例如使用ComboBox1.AddItem "你添加的内容"    只要写在窗体的加载事件下都可以;而对于这个窗体,下拉框中的内容不是一成不变的,而是根据SQL数据库表中的内容而变化的,所以这个控件编写下拉框内容的时候,需要连接数据库

根据表中的用户权限,操作员就只有一个,所以combo控件的下拉框中只有一个用户——3。
动态的combo下拉框的代码是这样的
</pre><pre name="code" class="plain">Private Sub Form_Load()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrcuser As ADODB.Recordset
    
    txtSQL = "select * from user_info "    '连接数据库
    Set mrcuser = ExecuteSQL(txtSQL, MsgText)
    Do While Not mrcuser.EOF     '利用do  while 语句把表中的操作员的用户名显示到窗体上
        cmbuserid.AddItem mrcuser.Fields(0)
        mrcuser.MoveNext
    Loop
End Sub
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);">解决完这个问题后,还有另一个问题,就是当你选择好用户名的时候,让下面的真实姓名也显示出来,因为都是一一对应的</span>
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><img src="https://img-blog.csdn.net/20150905201601648?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span>
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);">对于这段代码,是写在cmbuserid 的click事件下的,代码如下</span>
</span>
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"></span></span><pre name="code" class="plain">Private Sub cmbuserid_Click()
    Dim txtSQL As String
    Dim MsgText As String
    Dim mrcuser As ADODB.Recordset
    txtSQL = "select * from user_info where userid='" & cmbuserid.Text & "'"  ' 以选择的userID作为条件
    Set mrcuser = ExecuteSQL(txtSQL, MsgText)
    cmbusername.Text = mrcuser.Fields(3) & ""
End Sub
接下来就是另一个问题了,一个选项卡中有好几个选项卡,那么应该把代码写在什么的事件下面呢,对于这个问题,我当时根本没有头绪,是问的别人。
 
  
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"></span></span><pre name="code" class="plain">If SSTab1.Tab = 1 Then     '填写购卡代码

If SSTab1.Tab = 2 Then     '填写充值代码

If SSTab1.Tab = 3 Then     '填写退卡代码

If SSTab1.Tab = 4 Then     '填写临时用户代码

If SSTab1.Tab = 5 Then     '填写汇总代码

If SSTab1.Tab = 6 Then     '填写退出代码

这几个选项卡中,就是汇总的代码有点难,其他的都还好。
 
  
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><img src="https://img-blog.csdn.net/20150905201823895?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />
</span></span></span>
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"></span></span></span><pre name="code" class="plain"><div style="line-height: 28px; color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; background-color: rgb(240, 240, 240);">(1)购卡张数:用到student表,就是算一下这个操作员一共卖了多少张卡,其中会用到一个RecordCount   </div><div style="line-height: 28px; color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; background-color: rgb(240, 240, 240);">(2)退卡张数:用到Cancelcard 表,同样算一下一共退了多少卡</div><div style="line-height: 28px; color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; background-color: rgb(240, 240, 240);">(3)总售卡数:我是这样理解的:总售卡数=售卡张数+退卡张数</div><div style="line-height: 28px; color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; background-color: rgb(240, 240, 240);">(4)充值金额:用到recharge表,就是算一下总的充值钱数,要用到sum 函数</div><div style="line-height: 28px; color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; background-color: rgb(240, 240, 240);">(5)退卡金额:用到Cancelcard 表,同样算一下一共退的钱数</div><div style="line-height: 28px; color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; background-color: rgb(240, 240, 240);">(6)应收金额:应收金额=充值金额-退卡金额</div><pre name="code" class="plain"> '填写汇总选项卡
     If SSTab1.Tab = 4 Then
     
        '售卡张数由student表决定
        txtSQL = "select * from student_info where userid='" & Trim(cmbuserid.Text) & " '"
        Set mrcstudent = ExecuteSQL(txtSQL, MsgText)
        txtcardsell.Text = mrcstudent.RecordCount
        
        '退卡张数由cancelcard表决定
        txtSQL = "select * from cancelcard_info where userid='" & cmbuserid.Text & "'"
        Set mrccancelcard = ExecuteSQL(txtSQL, MsgText)
        txtcardback.Text = mrccancelcard.RecordCount
        
        '总售卡张数=售卡+退卡
        txtsumcardsell.Text = mrcstudent.RecordCount + mrccancelcard.RecordCount
        
        '填写充值金额
        txtSQL = "select sum (addmoney) from recharge_info where userID='" & cmbuserid.Text & "'"
        Set mrcrecharge = ExecuteSQL(txtSQL, MsgText)
        txtrecharge.Text = Trim(mrcrecharge.Fields(0)) & ""
        
        '填写退卡金额
        txtSQL = "select sum(cancelcash)from cancelcard_info where userid='" & cmbuserid.Text & "'"
        Set mrccancelcard = ExecuteSQL(txtSQL, MsgText)
        txtcardbackcash.Text = mrccancelcard.Fields(0) & ""
        
        '填写临时收费  利用studnet表找到谁是临时用户,找到卡号,然后从recharge表中找到consume之和
        txtSQL = "select * from student_info where userid='" & Trim(cmbuserid.Text) & " 'and type='" & "临时用户" & "'"
        Set mrcstudent = ExecuteSQL(txtSQL, MsgText)
        Do While Not mrcstudent.EOF
            txtSQL = "select * from recharge_info where cardno='" & Trim(mrcstudent!cardno) & "' and status ='未结账' and userid='" & Trim(cmbuserid.Text) & "'"
            Set mrcrecharge = ExecuteSQL(txtSQL, MsgText)
            If mrcrecharge.EOF Then
                GoTo nx
            End If
                txttmprecharge.Text = mrcrecharge.Fields(0)
                A = A + Val(mrcrecharge!addmoney)
nx:
                mrcstudent.MoveNext
        Loop
        txttmprecharge.Text = A
	'没有临时收费的用户
        If mrcrecharge.EOF = True Then
            MsgBox "没有临时用户收费!", vbOKOnly + vbExclamation, "警告"
            Exit Sub
        End If
        txtshouldcash.Text = Val(txtrecharge.Text) - Val(txtcardbackcash.Text) & ""
       
     End If

以上就是我的结账,若有错误,请大神指出~~~
 
 
  
 
  
<span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);"><span style="color: rgb(44, 44, 44); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53; font-size: 16px; line-height: 28px; background-color: rgb(240, 240, 240);">

</span></span>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值