报表顾名思义就是向上级汇报情况的表格,当会计的天天和它打交道,虽然本人差一丢丢没考下会计证吧,但是对它还是有一些些了解的~
随着信息时代的不断发展呢,会计都变成电算化的了,我们报表也不能落后了,我们可以利用报表设计器来实现数据与格式的分离,这样使用报表的人可以只修改数据,或者只修改格式了。在我的机房收费系统的结账环节就认识了这位新同学——报表。我们可以用它来总结一时间段内的收支情况,结账之后,把汇总的内容记录到CheckDay _Info表中,然后show给查账的人看的。
VB、报表设计器、SQL Server数据库这三个对象怎么连接才能生成报表呢,下面我们就一步步的来分析:
(注:以下操作发生在结账之后,即CheckDay_Info表中已存在账单)
一、SQL Server数据库与报表设计器的连接
①打开Grid++Report设计器,新建向导
②创建数据库连接,设置数据连接属性
③输入服务器名称要填写你的IP地址,记得要选择允许保存密码,否则就会报出下面的错误,我看了半天才知道是这个原因。。测试成功之后,在查询SQL中输入你的查询语句:SELECT * FROM CheckDay_Info
④定义存储报表明细记录的字段。
⑤定义明细网格中显示的列。
到这里,我们报表的雏形就出来了。
⑥报表中参数的设置,以MakeNow参数设置为例。插入参数,修改参数的名称为MakeNow,数值类型设置为日期时间。在报表中插入一个综合文字框,输入参数名到[# #]这个里面,如:[#MakeNow#]。
这样数据库与报表设计器的连接就实现了,把报表模板保存一下就行了。
二、VB与报表的连接——报表控件
①首先你需要将grdes50.dll和gregn50.dll控件注册,添加Grid++Report Designer5.0 和Grid++Report Engine5.0部件,将GRDisplayViewer画到窗体里。下面的代码就可以加载账单了。其中那个MakeNow就是我们在设计报表时的参数,在这里我们赋给它时间。
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong> TxtSQL = "select * from CheckDay_Info where date = '" & Format(Date, "yyyy-mm-dd") & "' " '选出当天的账单 Set Report = New grproLibCtl.GridppReport '实例化报表对象 Report.LoadFromFile App.Path & "\checkday.grf" '加载报表模板 Report.DetailGrid.Recordset.ConnectionString = "provider=sqloledb;server=192.168.24.230;database=AZZ_Charge;uid=sa;pwd=123456;" '连接到数据库 TxtSQL = "select top 1 * from checkday_info order by date desc" '选出数据 Report.DetailGrid.Recordset.QuerySQL = TxtSQL '查看报表 Report.ParameterByName("Date").AsDateTime = Format(Date, "yyyy-mm-dd") Report.ParameterByName("MakeNow").AsDateTime = Format(Now, "yyyy-mm-dd hh:mm:ss") GRDisplayViewer1.Report = Report ' 设置报表查询显示器控件的关联报表对象 GRDisplayViewer1.Start '启动报表运行 </strong></span>
②刷新日结账单,将最新的数据重新加载一次。
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Private Sub CmdSX_Click() '刷新日结账单 Report.DetailGrid.Recordset.QuerySQL = "SELECT TOP 1 * FROM CheckDay_Info ORDER BY Date DESC" '按照降序排列,ASC是按照升序排列 Report.ParameterByName("Date").AsString = Format(Date, "yyyy-mm-dd") Report.ParameterByName("MakeNow").AsDateTime = Format(Now, "yyyy-mm-dd hh:mm:ss") GRDisplayViewer1.Refresh End Sub </strong></span>
③打印预览
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Private Sub CmdShowPrint_Click() Report.PrintPreview (True) '打印预览 End Sub </strong></span>
④打印
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Private Sub CmdPrint_Click() '打印 Report.[Print] (True) End Sub </strong></span>
在这里的Print要用中括号括起来,这里是为了与VB中的Print方法区别开。
小结:
对于报表的学习要先站在巨人的肩膀上,怎么体现的呢,那就是先用师姐给的模板,,当我发现参数没有办法设置的时候,我就会去想设计自己的报表模板。