【前言】
机房收费系统完成了,收获很多,想要把现在的收获定格一下,写了这篇博客,希望与同学们一起交流,互相学习,共同进步。报表在数据库视频里面是有所耳闻的,但是并没有自己去做。现在接触报表,觉得还是比较容易接受的。
【问题一】-- 报表制作与连接数据表
报表是用来显示我们数据库中某张表的内容的,打开Grid++Report设计器,所以第一步我们要做一张报表,第二步是连接报表与数据库,这个内容大家参考迎迎的博客:报表连接数据库。总结的非常的详细,图片很详细,这里我就不再赘述,关于报表与VB的连接我做一些补充。
【问题二】-- VB让报表参数正确显示
这一部分我也分了几个步骤来解释,以周报表为例,我们添加了系统变量来显示当前日期和时间,还添加了三个参数与VB中的内容作为连接。 这一部分很喜欢用VB让报表有生命这个形容词,PS:是借用雅雯同学的,下面看看如何操作吧~~
①制表时间:当前日期时间。这个在VB里面有date函数,在报表里面它是一个系统变量,首先我们可以点击上面的钟表一样的图形,就是插入系统变量,将变量插入到想要到位置,感觉类似于VB中的添加控件,设置变量类型为当期日期时间就好了。
②开始时间与结束时间:VB中咱们用周报表的时候展示的是一段时间的收入,从几号到几号。
③首先我们需要添加需要的参数,在参数集合那里,添加我们需要的三个参数:BeginDate,EndDate,XX,接下来要做的是把这些参数和报表界面里的综合文字框联系起来,让这些类似于label一样的综合文字框有生命。
④其次,在插入菜单选择插入综合文字框到想要插入的位置。这里我们插入了三个综合文字框,以BeginDate为例,其他两个也一样。我们可以在右侧更改文字框的属性.从数据里更改文本为BeginDate,这里的begindate要作为一个参数与VB里的DTPicker联系起来。所以要设置它的文本为参数类型的。
⑤下面是将这些综合文字框和参数联系起来的顺序。这样这三个文字框就有了生命,显示的内容可以随着我们的在VB中的操作而变动。
===============================================================================
走到这里,当然我们只是做好了报表里的工作,要实现整个过程还需要代码。
<span style="font-family:FangSong_GB2312;font-size:18px;"><strong>Dim Strsql As String Dim strMsg As String '创建报表对象 Strsql = "select * from CheckWeek_info where date > = '" & DTP1.Value &"' and date < = '" & DTP2.Value & "'" '实例化报表 Set Report = New grproLibCtl.GridppReport '载入报表模板文件 Report.LoadFromFile (App.Path & "\周报表.grf") '数据源连接 Report.DetailGrid.Recordset.ConnectionString = Connectstring() '通过SELECT查询创建记录集 Report.DetailGrid.Recordset.Querysql = Strsql Report.ParameterByName("begindate").AsString =Format(DTP1.Value,"yyyy-mm-dd") Report.ParameterByName("enddate").AsString =Format(DTP2.Value,"yyyy-mm-dd") Report.ParameterByName("XX").AsString = Nowuser '显示报表中的内容 GRDisplayViewer1.Report = Report GRDisplayViewer1.start </strong></span>
(2)刷新日结账单,将最新的数据重新加载一次。
Private Sub CmdSX_Click() '刷新日结账单 '按照降序排列,ASC是按照升序排列 Report.DetailGrid.Recordset.Querysql = "SELECT TOP 1 * FROM Checkweek_Info ORDER BY Date DESC" Report.ParameterByName("begindate").AsString =Format(DTP1.Value,"yyyy-mm-dd") Report.ParameterByName("XX").AsString = Nowuser GRDisplayViewer1.Refresh End Sub
(3)打印预览
Private Sub CmdShowPrint_Click() Report.PrintPreview (True) '打印预览 End Sub
(4)打印
Private Sub CmdPrint_Click() '打印 Report.[Print] (True) 'Print用中括号括起来, 为了与VB中的Print方法区别开 End Sub
【总结】
报表初次见面可能会有陌生感,特别是Grid++Report设计器这个新事物,这个时候我们需要站在巨人的肩膀上,看看其他同学是怎么做的,看看师哥师姐是怎么做的,我们在参考他们的时候先盲人摸象,囫囵吞枣,然后当我们遇到问题的时候就要仔细去探索,精益求精了。
感谢您的阅读~~ 未完待续~~