今天分享一下结账窗体
我们在敲这个窗体之前,要先搞清楚这个窗体的主要功能是什么?为了谁而服务?
从题目就可以看出,这是个结账窗体,但是是结谁的账呢?结用户的帐,还是结员工的账?还是老板结算一天的账目,查看盈利额?从主窗体上方菜单栏可以看出,这个结账的功能是属于管理员的,也就是这项功能是为了管理员而设定的,操作员不能参与结账。再从窗体的两个下拉框可以看出,都是围绕着操作员而展开的。那就清楚了,是管理员要给操作员结账。
接下来,就要一步步的实现结账功能了
首先,就是要选择操作员用户名和操作员的姓名,那么,怎样才能在打开窗体的时候就能显示所有的操作员用户名呢?在这个地方我卡了一下,我设置下拉框的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
以上便为结账窗体的正整个执行步骤。
后期陆续更新,欢迎大家评论区留言!