VB机房收费系统09——日结账单和周结账单
2018-01-09 16:10
316 查看
前言
这是我整个机房项目中最后一个难点,这两个账单我卡了3天,敲完了后,我把收获分享在这里,希望对大家有所帮助。正文
这窗体不是敲出来,是调用和显示出来的!这里我们就用到了报表,报表下个生成器然后自己画也可以,直接选择给的机房素材也可以。
以我亲身经历来说,画报表没有调试报表代码难,调试报表代码没有找到报表控件难!
画报表
画报表参考博客:http://blog.csdn.net/zhoukun1008/article/details/38518297调试报表代码
报表代码有点类似机房中用到的“导出EXECEL”代码,是万能的。日结账单全代码:
Option Explicit '定义报表对象 Dim Report As grproLibCtl.GridppReport Private Sub Form_Load() Dim StrSQL As String Dim strMsg As String '创建报表对象 StrSQL = "select * from CheckDay_Info where date= '" & Date & "' " '实例化报表 Set Report = New grproLibCtl.GridppReport '载入报表模板文件 Report.LoadFromFile (App.Path & "\daycheck.grf") '数据源连接 Report.DetailGrid.Recordset.ConnectionString = connectstring '通过SELECT查询创建记录集 Report.DetailGrid.Recordset.QuerySQL = StrSQL '显示报表中的内容 GRDisplayViewer1.Report = Report GRDisplayViewer1.Start End Sub Private Sub cmddaylist_Click() '日结账单刷新 Dim txtsql As String Dim msgtext As String Dim mrc As ADODB.Recordset txtsql = "select * from checkday_Info " Set mrc = ExecuteSQL(txtsql, msgtext) '刷新 Report.DetailGrid.Recordset.QuerySQL = "select * from CheckDay_Info where date= '" & Date & "' " GRDisplayViewer1.Refresh End Sub Private Sub cmdprintpreview_Click() '打印预览 Report.PrintPreview (True) End Sub Private Sub cmdprint_Click() '打印,因为报表对象的print方法名与vb的内部定义方法有冲突所以要用中括号 Report.[Print] (True) End Sub
周结账单全部代码
Dim WithEvents Report As grproLibCtl.GridppReport Private Sub cmdweeklist_Click() '账单刷新 Dim txtsql As String Dim msgtext As String Dim mrc As ADODB.Recordset Dim mrc1 As ADODB.Recordset Dim mrc2 As ADODB.Recordset Dim mrc3 As ADODB.Recordset Dim mrc4 As ADODB.Recordset Dim mrc5 As ADODB.Recordset Dim RemainCash As Integer Dim RechargeCash As Integer Dim ConsumeCash As Integer Dim CancelCash As Integer Dim AllCash As Integer If DTPicker1.Value > DTPicker2.Value Then MsgBox "终止日期不能小于起始日期", 48, "提示" Exit Sub Else If DTPicker1.Value And DTPicker2.Value > Date Then MsgBox "小主,日子还没到呢", 48, "提示" DTPicker1.Value = Date DTPicker2.Value = Date Exit Sub Else txtsql = "select * from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker2.Value & "'" Set mrc = ExecuteSQL(txtsql, msgtext) If mrc.EOF Then MsgBox "该时间段没有数据!", 48, "提示" Exit Sub Else '删除check week表中的记 txtsql = "delete from checkweek_Info" Set mrc1 = ExecuteSQL(txtsql, msgtext) '计算上次充值卡金额 mrc.MoveLast RemainCash = mrc.Fields(0) '计算总充值金额mrc2 txtsql = "select sum(rechargecash) from checkday_info where date between '" & DTPicker1.Value & " ' and '" & DTPicker2.Value & "'" Set mrc2 = ExecuteSQL(txtsql, msgtext) If IsNull(mrc2.Fields(0)) = True Then RechargeCash = 0 Else RechargeCash = Trim(mrc2.Fields(0)) End If '计算总消费金额 txtsql = "select sum(consumecash) from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker2.Value & "'" Set mrc3 = ExecuteSQL(txtsql, msgtext) If IsNull(mrc3.Fields(0)) = True Then ConsumeCash = 0 Else ConsumeCash = Trim(mrc3.Fields(0)) End If '计算总退卡金额 txtsql = "select sum(cancelcash) from checkday_info where date between '" & DTPicker1.Value & "' and '" & DTPicker1.Value & "'" Set mrc4 = ExecuteSQL(txtsql, msgtext) If IsNull(mrc4.Fields(0)) = True Then CancelCash = 0 Else CancelCash = Trim(mrc4.Fields(0)) End If '计算本期充值卡金额 mrc.MoveLast AllCash = mrc.Fields(4) '添加到check week表中 txtsql = "select * from checkweek_info" Set mrc1 = ExecuteSQL(txtsql, msgtext) mrc1.AddNew mrc1.Fields(0) = RemainCash mrc1.Fields(1) = RechargeCash mrc1.Fields(2) = ConsumeCash mrc1.Fields(3) = CancelCash mrc1.Fields(4) = AllCash mrc1.Fields(5) = Date mrc1.Update '显示报表中的内容 Report.DetailGrid.Recordset.QuerySQL = txtsql GRDisplayViewer1.Refresh '给报表的日期赋值 Report.ParameterByName("BeginDate").Value = Format$(DTPicker1.Value, "yyyy-mm-dd") Report.ParameterByName("EndDate").Value = Format$(DTPicker2.Value, "yyyy-mm-dd") Report.ParameterByName("XX").Value = UserName End If End If End If End Sub Private Sub cmdprint_Click() Report.[Print] (True) End Sub Private Sub cmdprintpreview_Click() Report.PrintPreview (True) End Sub Private Sub Form_Load() txtsql = "select * from checkweek_info" '创建报表对象 Set Report = New grproLibCtl.GridppReport '放入做好的报表文件 Report.LoadFromFile (App.Path & "\weekcheck.grf") '连接数据源 Report.DetailGrid.Recordset.ConnectionString = "FileDSN=charge.dsn;UID=sa;PWD=123456" Report.DetailGrid.Recordset.QuerySQL = txtsql '显示报表的内容 GRDisplayViewer1.Report = Report GRDisplayViewer1.Start '给报表的日期赋值 Report.ParameterByName("BeginDate").Value = Format$(DTPicker1.Value, "yyyy-mm-dd") Report.ParameterByName("EndDate").Value = Format$(DTPicker2.Value, "yyyy-mm-dd") Report.ParameterByName("XX").Value = UserName End Sub
VB报表控件
和数据库原理一样,我们需要把报表程序与VB程序连接在一起。这就是Displayviewer控件
我们翻阅很多的博客中都写到它是下载报表软件后,引用,部件选择两个红框后出来的
但这两个红框在我这里根本就不显示。
就是因为这个原因,我查了很多报表博客,请了很多小伙伴帮忙都没弄出来,一弄就是3天......
问题的解决:在晓鸿大神的帮助下,找到了原因。大家还记得配置机房时需要注册的3个控件吗?
就是这3个小伙伴!我的电脑忘记什么原因,这3个注册的控件失效了。重新注册一遍之后,报表控件显示,账单出现。
报表dll,不会忘了......
相关文章推荐
- 【机房收费系统——报表与vb交互之日结账和周结账】
- VB查询数据库之结账——机房收费系统总结(五)
- 机房收费系统之日结账单和周结账单
- 【VB与数据库】——机房收费系统之结账
- VB查询数据库之结账——机房收费系统总结(五)
- 机房收费系统之结账与报表(三)VB与报表代码《一学就会傻瓜版》
- VB机房收费系统08——结账
- 【VB与数据库】机房收费系统设计阶段之结账
- 机房收费系统—结账
- VB.NET版机房收费系统—DataGridView应用
- VB机房收费系统01——使用前文档配置
- vb.net机房收费系统重构——存储过程的使用
- 【VB与数据库】——机房收费系统总览
- 机房收费系统之结账
- 机房收费系统总结之4——VB.NET 轻松解决判断文本框、组合框为空问题
- 机房收费系统之vb报表的模板的制作(一)
- VB.NET机房收费系统导出Excel
- 【机房收费系统】 之 结账
- 【机房收费系统】——结账
- 【VB与数据库】机房收费系统--序