结账窗体也是三大难点之一。结账是结谁的帐,是谁在结账?是管理员在结操作员的帐。就让管理员知道每天机房的金钱收支。详细的说是把每个操作员一天收支明细列出来让管理员一目了然。
关于结账窗体我们可以看到:有购卡、充值、退卡、临时用户、汇总、退出。这几个选项按钮。无非是将数据库对应表里面的信息赋值给控件。
购卡:就是在student_info表总查询没有结账的那些新注册的学生卡号等信息。
充值:在recharge_info表中查询未结账的充值信息。
退卡:在cancelCard_info中查询未结账的退卡信息。
临时用户:在student_info表中查询未结账的,没有退卡的临时用户。
汇总:将前面所有的信息汇总起来。用到了student_Info 、Recharge_Info 、cancelcard_Info 表。
售卡张数=购卡选项卡的记录总数
退卡张数=退卡选项卡的记录总数
退卡金额=cancelcard_Info表中的金额进行累加
总售卡数=售卡数-退卡数
充值金额=student_Info 表中注册时候的充值金额+Recharge_Info 表中的充值金额(注册时的充值的钱和充值时充进去 的钱其实都一样)
临时收费=临时收费选项卡记录中的卡号上机所消费的钱的总和(Line_Info)(只是用来显示)
应收金额=充值金额-退卡金额
窗体设计:
SSTAB控件的添加:
首先这个窗体是需要加载一个部件—SSTab
(步骤为:工程—部件—Microsoft Tabbed Dialog Control 6.0)
操作员真实姓名我用的是label标签,没有用combox。通过选择操作员用户名来显示操作员的真实姓名
txtsql = "select * from User_info where Level='操作员'"
Set mrc = executeSQL(txtsql, msgtext)
lbl.Caption = mrc.Fields(3)
以购卡为例:(充值,退卡,临时用户,汇总,退出也是同样的思路,只不过查询的表不一样)
If SSTab1.Caption = "购卡" Then
txtsql = "select * from student_info where userid='" & Trim(combouserid.Text) & "' and ischeck='未结账'"
Set mrcst = executeSQL(txtsql, msgtext)
With MSFlexGrid1
.rows = 1
.CellAlignment = 4
.TextMatrix(0, 0) = "卡号"
.TextMatrix(0, 1) = "学号"
.TextMatrix(0, 2) = "姓名"
.TextMatrix(0, 3) = "日期"
.TextMatrix(0, 4) = "时间"
.TextMatrix(0, 5) = "类型"
If mrcst.EOF = True Then
MsgBox "没有数据!", vbOKOnly + vbExclamation, "提示"
Exit Sub
End If
Do While Not mrcst.EOF
.rows = .rows + 1
.CellAlignment = 4
.TextMatrix(.rows - 1, 0) = Trim(mrcst.Fields(0))
.TextMatrix(.rows - 1, 1) = Trim(mrcst.Fields(1))
.TextMatrix(.rows - 1, 2) = Trim(mrcst.Fields(2))
.TextMatrix(.rows - 1, 3) = Trim(mrcst.Fields(12))
.TextMatrix(.rows - 1, 4) = Trim(mrcst.Fields(13))
.TextMatrix(.rows - 1, 5) = Trim(mrcst.Fields(14))
mrcst.MoveNext
Loop
End With
mrcst.Close
End If