在机房收费的历程中,报表是少不了的,几乎任何一个管理系统都会用到报表这样的一个方便统计的图表,我们在VB6.0的机房用过了报表,是第三方的插件,grid++的报表,因为是第三方的报表,所以在设计上还是有不足的地方,不能满足所有的需求,而这一次在VS中,报表就来的方便多了,VS自己就带了一个报表控件,这个控件ReportViewer虽然也有不好的地方,但是比起原来的报表也是方便多了。
说道画报表这个问题,还是要先从VS中的报表原理来讲起。
首先来看,ReportViewer就是一个报表的容器,里面的报表是可以替换的,所以在显示报表之前需要先给这个控件指定一个报表文件(*.rdlc),然后这个控件在指定的同时会加载这个报表文件,由报表文件获得数据之后然后再显示到控件中,最后我们才能看到报表的外在表现形式。
所以第一步我们要做的就是建立这个所谓的报表“真”文件,也就是*.rdlc的文件。
我做好的文件如下图:
其中的数据区就是从数据源实例中得到的。所以在画这个报表文件之前要先指定数据集。在控件上点击右上的小箭头,点设计新报表:
然后就会出现新建数据集的一个对话框,写好名称后,点击数据源上的新建,指定数据库后就可以用自己数据库的数据集来创建数据集。
创建好数据库连接了以后,我们就要开始选择数据集中所要包含的信息了,如图,需要什么表的字段,就添加什么字段。
创建好数据集后会默认选中,然后进行下一步。
然后就是排列字符串了,在排列的时候要知道自己要把数据显示在什么地方,这里要一字排开,所以选择按行来排列其中求和列随便添加一个就可以了,它是放在最后面进行统计用的:
然后再选择需要排列的方式和展示方法:
最后选择完了颜色之后就可以进行报表的设计了。
初始的状态是这样的:我们可以向报表面板里面添加控件,也就是一些字符和必要的函数,这都在左面的工具箱和报表数据有体现,其中工具箱是用来添加控件用的,可以添加新的表,lable框,还有一些常用的东西。而报表数据则是有一些给定的参数和自己设计的参数等数据构成。
添加完成了之后就成了最后的结果了,记住自己添加的参数,下一步就是添加数据了。
在用报表实例之前要先添加报表的引用:
Imports Microsoft.Reporting.WinForms然后写代码:
Dim rptDataSource As New ReportDataSource
Dim params() As ReportParameter = '给报表的参数赋值 { New ReportParameter("DateStart", Date.Parse(dtpStart.Text)), New ReportParameter("DateEnd", Date.Parse(dtpEnd.Text)), New ReportParameter("UserIDHost", UserNameHost) } '设置报表数据源名称 rptDataSource.Name = "DataSet1" '指定数据集名 '设置报表数据源实例 rptDataSource.Value = DayCheckList '写的数据源名称 rptvDayCheck.LocalReport.ReportEmbeddedResource = "UI.DayCheckReport.rdlc" '报表文件名 rptvDayCheck.LocalReport.DataSources.Clear() '清空存在报表 rptvDayCheck.LocalReport.DataSources.Add(rptDataSource) '添加数据源 rptvDayCheck.LocalReport.SetParameters(params) '传递参数 rptvDayCheck.RefreshReport() '刷新报表控件
通过这次报表的学习,体会到了自己实际制作报表的艰辛,也知道了VS的人性化不是一点半点的,所以我们还是需要继续的学习,为了优化着想。