对于机房收费的结账,我感觉是所有窗体中,最难的一个。这个窗体我真的做了好多天。它的难度系数我感觉是最高的。

首先,你要理清上机时间和收费标准的关系,在预备时间中,是不收费的。

其次,在超过预备时间,一个单位时间之内,收一个费用。在一个单位时间到两个单位时间内,收两个单位时间的费用。

然后,在结账窗口,链接数据库,显示出所有该用户未结账的信息。

最后,在点击结账时,这个用户的所有未结账信息都结账,并写入数据库。结账窗口查询类信息都为0。并把结账信息写入结账表。已被制作报表使用。

在做结账窗体时,主要是理清思路,这样做起来就容易很多了。我把我的结账窗体和代码放在下面,不做详细的解说,只是给自己留个思路,读者一个方法。

代码仅供参考:

Option Explicit
Dim c0 As Variant   '用于把最新数据存放到表
Dim c1 As Variant
Dim c2 As Variant
Dim c3 As Variant
Dim c4 As Variant
Dim c5 As VariantPrivate Sub cboUser_Click()Dim txtSQL As StringDim MsgText As StringDim mrcU As ADODB.Recordset'使得 用户名的卡号 与 姓名 一致txtSQL = "select UserName from User_Info where UserID='" & cboUser.Text & "'"Set mrcU = ExecuteSQL(txtSQL, MsgText)cboUserName.Text = mrcU.Fields(0)mrcU.CloseCall viewdate       '更新汇总信息
End SubPrivate Sub cboUserName_Click()Dim txtSQL As StringDim MsgText As StringDim mrcU As ADODB.Recordset'用户名的卡号 与 姓名 一致txtSQL = "select UserID from User_Info where UserName='" & cboUserName.Text & "'"Set mrcU = ExecuteSQL(txtSQL, MsgText)cboUser.Text = mrcU.Fields(0)mrcU.CloseCall viewdate       '更新信息
End SubPrivate Sub viewdate()      '根据已经选择好人员信息来修改SSTab里面的汇总信息Dim txtSQL As StringDim MsgText As StringDim mrcSD As ADODB.RecordsetDim mrcRC As ADODB.RecordsetDim mrcCC As ADODB.RecordsetDim RechargeCash As Variant         '用于存储,充值的 所有金额Dim cancelCash As Variant           '用于存储,退钱的 所有金额'把他的所有信息,未结账的显示出来'txtSQL = "select studentNo,cardno,date,time from student_Info where Ischeck = '未结帐' and UserID='" & cboUser.Text & "'"'Set mrcSD = ExecuteSQL(txtSQL, MsgText)'由于有空格,找了好久才找到txtSQL = "select studentNo,cardno,date,time from student_Info where Ischeck='未结账' and UserID='" & cboUser.Text & "'"Set mrcSD = ExecuteSQL(txtSQL, MsgText)MfgBugCard.Rows = mrcSD.RecordCount + 1With MfgBugCard.Row = 0While mrcSD.EOF = False.Row = .Row + 1.TextMatrix(.Row, 0) = " " & mrcSD.Fields(0).TextMatrix(.Row, 1) = " " & mrcSD.Fields(1).TextMatrix(.Row, 2) = " " & mrcSD.Fields(2).TextMatrix(.Row, 3) = " " & mrcSD.Fields(3)mrcSD.MoveNextWendEnd With'把该操作员的所有未结账的充值信息汇总到表格,一个注册信息对应一个充值信息txtSQL = "select studentNo,cardno,addmoney,date,time from ReCharge_Info where status='未结账' and UserID='" & cboUser.Text & "'"Set mrcRC = ExecuteSQL(txtSQL, MsgText)MfgRecharge.Rows = mrcRC.RecordCount + 1With MfgRecharge.Row = 0While Not mrcRC.EOF.Row = .Row + 1.TextMatrix(.Row, 0) = mrcRC.Fields(0).TextMatrix(.Row, 1) = mrcRC.Fields(1).TextMatrix(.Row, 2) = mrcRC.Fields(2).TextMatrix(.Row, 3) = mrcRC.Fields(3).TextMatrix(.Row, 4) = mrcRC.Fields(4)RechargeCash = RechargeCash + mrcRC.Fields(2)mrcRC.MoveNextWendEnd With'把所有信息汇总到表格txtSQL = "select studentNo,cardNo,date,time,cancelcash from CancelCard_Info where Ischeck='未结账' and UserID='" & cboUser.Text & "'"Set mrcCC = ExecuteSQL(txtSQL, MsgText)MfgCancelCard.Rows = mrcCC.RecordCount + 1With MfgCancelCard.Row = 0While mrcCC.EOF = False.Row = .Row + 1.TextMatrix(.Row, 0) = " " & mrcCC.Fields(0).TextMatrix(.Row, 1) = " " & mrcCC.Fields(1).TextMatrix(.Row, 2) = " " & mrcCC.Fields(2).TextMatrix(.Row, 3) = " " & mrcCC.Fields(3).TextMatrix(.Row, 4) = " " & mrcCC.Fields(4)cancelCash = cancelCash + mrcCC.Fields(4)mrcCC.MoveNextWendEnd With'然后,把操作员 的所有统计 信息  汇总 到 汇总列表txtSaleCard = mrcSD.RecordCounttxtCancelCard = mrcCC.RecordCounttxtRechargeCash = RechargeCashtxtCancelCash = cancelCashtxtSumCard = Val(txtSaleCard.Text) - Val(txtCancelCard.Text)txtSumCash = Val(txtRechargeCash.Text) - Val(txtCancelCash.Text)mrcSD.Close         '关闭释放空间mrcRC.ClosemrcCC.Close
End SubPrivate Sub cmdCheckOut_Click()     '把该操作员 有关的  未结账信息 修改成 已结账,------并写报表Dim txtSQL As StringDim MsgText As StringDim mrcSD As ADODB.RecordsetDim mrcRC As ADODB.RecordsetDim mrcCC As ADODB.RecordsetDim mrcCO As ADODB.RecordsettxtSQL = "select Ischeck from student_Info where Ischeck='未结账' and UserID='" & cboUser.Text & "'"Set mrcSD = ExecuteSQL(txtSQL, MsgText)txtSQL = "select status from Recharge_Info where status='未结账' and UserID='" & cboUser.Text & "'"Set mrcRC = ExecuteSQL(txtSQL, MsgText)txtSQL = "select Ischeck from CancelCard_Info where Ischeck='未结账' and UserId='" & cboUser.Text & "'"Set mrcCC = ExecuteSQL(txtSQL, MsgText)While mrcSD.EOF = False            '修改数据库   并且 更新mrcSD.Fields(0) = "已结账"mrcSD.Update        '更新数据库mrcSD.MoveNextWendWhile mrcRC.EOF = FalsemrcRC.Fields(0) = "已结帐"mrcRC.UpdatemrcRC.MoveNextWendWhile mrcCC.EOF = FalsemrcCC.Fields(0) = "已结帐"mrcCC.UpdatemrcCC.MoveNextWendmrcSD.Close         '关闭释放空间mrcRC.ClosemrcCC.Close'记录修改成功   将刚才的操作写入 日报表Call ReportDayCall ReportSumMsgBox "结账成功", vbOKOnly + vbInformation, "提示"Dim mrcU As ADODB.Recordset'使得 用户名的卡号 与 姓名 一致txtSQL = "select UserID from User_Info where UserName='" & cboUserName.Text & "'"Set mrcU = ExecuteSQL(txtSQL, MsgText)cboUser.Text = mrcU.Fields(0)mrcU.CloseCall viewdate       '更新  汇总信息End SubPrivate Sub Form_Load()Dim txtSQL As StringDim MsgText As StringDim mrcU As ADODB.RecordsetSSTab.Tab = 0       '设置 刚刚载入窗体的时候 的 选项卡位置'初始化 表格  的标题With MfgBugCard.TextMatrix(0, 0) = "学号".TextMatrix(0, 1) = "卡号".TextMatrix(0, 2) = "日期".TextMatrix(0, 3) = "时间"End WithWith MfgRecharge.TextMatrix(0, 0) = "学号".TextMatrix(0, 1) = "卡号".TextMatrix(0, 2) = "充值金额".TextMatrix(0, 3) = "日期".TextMatrix(0, 4) = "时间"End WithWith MfgCancelCard.TextMatrix(0, 0) = "学号".TextMatrix(0, 1) = "卡号".TextMatrix(0, 2) = "日期".TextMatrix(0, 3) = "时间".TextMatrix(0, 4) = "退卡金额"End With'把数据库中 的 操作员的 卡号 和 姓名 提取出来  供选择txtSQL = "select UserID,UserName from User_Info "Set mrcU = ExecuteSQL(txtSQL, MsgText)While mrcU.EOF = FalsecboUser.AddItem Trim(mrcU.Fields(0))cboUserName.AddItem Trim(mrcU.Fields(1))mrcU.MoveNextWendmrcU.CloseEnd SubPrivate Sub SSTab_Click(PreviousTab As Integer)     '点击退出按钮,卸载该窗体Select Case SSTab.TabCase 4Unload MeEnd Select
End Sub'写报表信息
Private Sub ReportDay()Dim txtSQL As StringDim MsgText As StringDim mrcCD As ADODB.Recordset    '用于写  今日的 账单Dim mrcSD As ADODB.Recordset    '用于找出  上期 和 本期的充值卡余额Dim mrcRC As ADODB.Recordset    '用于找出 当日的 充值金额Dim mrcL As ADODB.Recordset     '用于找出 当日的 消费金额Dim mrcCC As ADODB.Recordset    '用于找出 当日的 退卡金额Dim CardCash As Double      '对应 本期消费金额Dim RechargeCash As Double  '对应 本日充值余额Dim lineCash As Double      '对应 本日消费金额Dim cancelCash As Double    '对应 本日退卡金额txtSQL = "select * from CheckDay_Info"      '等待写入Set mrcCD = ExecuteSQL(txtSQL, MsgText)txtSQL = "select sum(cash)  from student_Info where status='使用'"Set mrcSD = ExecuteSQL(txtSQL, MsgText)     '存放 本期充值卡余额txtSQL = "select sum(addmoney) from ReCharge_Info where date='" & Date & "'"Set mrcRC = ExecuteSQL(txtSQL, MsgText)     '存放 本日充值金额txtSQL = "select sum(consume) from Line_Info where offdate='" & Date & "'"Set mrcL = ExecuteSQL(txtSQL, MsgText)      '存放 本日消费金额txtSQL = "select sum(CancelCash) from CancelCard_Info where date='" & Date & "'"Set mrcCC = ExecuteSQL(txtSQL, MsgText)     '存放 本日退卡金额'逐一判断 记录集合 为空的情况。如果查询结果为空 则赋值为0If IsNull(mrcSD.Fields(0).Value) ThenCardCash = 0ElseCardCash = mrcSD.Fields(0)End IfIf IsNull(mrcRC.Fields(0).Value) ThenRechargeCash = 0ElseRechargeCash = mrcRC.Fields(0)End IfIf IsNull(mrcL.Fields(0).Value) ThenlineCash = 0ElselineCash = mrcL.Fields(0)End IfIf IsNull(mrcCC.Fields(0).Value) ThencancelCash = 0ElsecancelCash = mrcCC.Fields(0)End IfmrcCD.AddNewmrcCD.Fields(4) = Val(CardCash) + Val(lineCash) + Val(cancelCash) - Val(RechargeCash)mrcCD.Fields(1) = Val(RechargeCash)mrcCD.Fields(2) = Val(lineCash)mrcCD.Fields(3) = Val(cancelCash)mrcCD.Fields(0) = Val(CardCash)mrcCD.Fields(5) = Datec0 = mrcCD.Fields(0)c1 = mrcCD.Fields(1)c2 = mrcCD.Fields(2)c3 = mrcCD.Fields(3)c4 = mrcCD.Fields(4)c5 = mrcCD.Fields(5)mrcCD.UpdatemrcCD.CloseEnd SubPrivate Sub ReportSum()Dim txtSQL As StringDim MsgText As StringDim mrcCD As ADODB.RecordsetDim mrcCS As ADODB.RecordsettxtSQL = "select * from CheckDay_Info where date='" & Date & "'"Set mrcCD = ExecuteSQL(txtSQL, MsgText)txtSQL = "select * from checkWeek_Info where date='" & Date & "'"Set mrcCS = ExecuteSQL(txtSQL, MsgText)'如果 总报表中 没有数据,那么把日汇总表 的内容写入mrcCS.AddNewmrcCS.Fields(0) = mrcCD.Fields(0)mrcCS.Fields(1) = mrcCD.Fields(1)mrcCS.Fields(2) = mrcCD.Fields(2)mrcCS.Fields(3) = mrcCD.Fields(3)mrcCS.Fields(4) = mrcCD.Fields(4)mrcCS.Fields(5) = mrcCD.Fields(5)mrcCS.Update        '更新mrcCS.Close         '释放内存mrcCD.CloseEnd Sub

VB查询数据库之结账——机房收费系统总结(五)相关推荐

  1. 数据库设计说明书——机房收费系统

    数据库设计说明书 1引言 1.1编写目的 说明编写这份数据库设计说明书的目的,指出预期的读者. 本数据库设计说明书说明了机房收费系统的数据库设计和结构情况,用于开发人员进行项目设计,同时也为后期数据库 ...

  2. 机房收费系统系列五:报表

           在机房收费系统中还有两个地方用到了报表:日报表和周报表,在我看来日报表和周报表其实是一样的,日报表是统计一天的收入,支出,对每天金额做个统计,周报表就是记录从某个时间段到另一个时间段的净 ...

  3. VB查询数据库之写入数据库——机房收费系统总结(三)

         在机房收费系统中,新注册的用户,更改的密码,上机下级记录,上机收费记录等等都要写入数据库,这样,后面的查询才能生效.像数据库中写入数据,首先,找到你要写入数据的数据库中的表,在表中建立新的行 ...

  4. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  5. VB.net版机房收费系统——结账功能实现(代码部分)

    实现结账功能的时候,被选项卡控件整的有点郁闷,瞬间脑袋就凌乱了,听上去自己好像很可笑的样子--于是,便去爬巨人的肩膀了~ 看了欢哥的博客,发现她的结账博客是按照"索引"思想写的,在 ...

  6. vb.net机房收费系统之组合查询

    我个人一直认为,组合查询是机房收费系统的一个难点,尤其是用到三层之后,如果要为组合查询中的每一个查询建立一个显然是太麻烦了. 下面介绍一下我的方法,对大家起个参考作用. 我将该表中可输入的内容定义为一 ...

  7. 【VB与数据库】机房收费系统开发阶段之登陆

    在机房收费系统中开始就是登陆窗体,在开始的时候如果全局观没有把握好,就会丢掉更新数据库中的数据,我刚开始就忘了更新Onwork _Info中的数据,所以要做一个窗体前,就要给它建立好自己的关系图,牵一 ...

  8. VB.NET版机房收费系统---组合查询

    查询的意思就是查找,寻找,指在某一个或几个地方找出自己所要的信息,假如我想搜索一下我自己写的博客,名字叫做初雪之恋,我在百度的搜索框中输入丁国华三个字,会有怎样的惊喜等着我? 啊哦,这个信息并不是我想 ...

  9. 机房收费系统(VB.NET)——超具体的报表制作过程

    之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件. 刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了. 以下 ...

最新文章

  1. StringUtils工具类的常用方法
  2. Java学习之while语句
  3. hibernate 最新 jar 下载
  4. SpringBoot 集成ip2region
  5. 一次性缴纳6万元,退休后每月领1500元养老金,你愿意吗?
  6. 技术动态 | 数据库研究者视角下的知识图谱研究
  7. TeamCity+Rancher+Docker实现.Net Core项目DevOps(目前成本最小的DevOps实践)
  8. VSCode拓展插件推荐(HTML、Node、Vue、React开发均适用)
  9. Java学习笔记1:Java中有关print、println、printf的用法和区别
  10. spring init
  11. CSDN前200名博主
  12. 传智播客java基础入门pdf
  13. wps垂直居中快捷键_wps文字如何上下居中
  14. h, w = img.shape什么意思?
  15. 魅族的usb计算机连接无法使用,魅族16怎么连接电脑 魅族手机连接电脑无法识别...
  16. web自动化(鼠标、键盘操作)
  17. Typescript - enum 枚举类型(数值型枚举 / 字符串枚举 / 常量枚举 / 异构枚举 / 计算枚举成员 / 联合枚举和枚举成员类型 / 运行时的枚举 / 环境枚举 / 对象与枚举)教程
  18. oracle10g lsnrctl,linux下oracle10g lsnrctl没反应 sqlplus正常 bug4518443
  19. 抓包工具哪些好,来看这里就够了.....
  20. emc服务器装什么系统,EMC DD系统安装指南.pdf

热门文章

  1. ES设置自定义分词器
  2. Clipper库中文文档详解
  3. 图的深度优先算法和广度优先算法
  4. nrf51822资料
  5. 《去哪儿网支付系统架构演进全历程》阅读有感
  6. 23.从0学ARM-网卡DM9000及uboot协议栈详解
  7. 一图理解geos的九交矩阵模型——面面关系
  8. c罗图片带字经典语言,20条经典的唯美的图片带字-感人的情话
  9. DEV gridcontrol设置行与选中行的不同颜色
  10. VMware虚拟机扩容——Ubuntu的/dev/sda1分区挂在根目录(“/“)下用LVM(逻辑卷管理)模式扩容无效