机房收费系统无论是重构还是第一版,都用到了报表,为什么在一个系统中要添加报表呢?报表的作用是什么呢?报表百科。我理解的报表是:向上级报告情况的一个媒介,没有固定的格式。之前在项目中,我们真正给企业做过一次报表,是以导出word的形式生成的,大概格式如图:
这次在自己的《机房收费系统》中设计报表,我使用的VS中自带的报表制作工具:ReportViewer。之前看前辈的博客,大家用的方法大多是以绑定数据源的方式,将数据库中的信息显示到报表中,制作过程相当精彩。详情参考博客:
http://blog.csdn.net/zlt995768025/article/details/50887984
http://blog.csdn.net/caoyujiao520/article/details/50925850
看了前辈的博客,发现了一个问题,控件ReportViewer和控件Datagridview给人的感觉是一样的,连接数据库的步骤也几乎是一样的。我们可以直接通过将Datagridview绑定数据源的方式显示数据库中的信息,也可以通过从数据库中查找,再将一条一条数据返回的形式显示数据库中的信息。那么,ReportViewer是不是也有另一种显示数据库信息的方式呢?我们能不能通过三层架构,将信息返回到U层后,直接把查到的数据赋值给报表中的变量,让其显示呢?
实验证明,一切都是有可能的!
Imports Microsoft.Reporting.WinForms
这一步和前辈的步骤是一样的。
参数,个人理解是传递数据的变量
'显示报表信息 '设置嵌入报表的资源的名称; ReportViewer1.LocalReport.ReportEmbeddedResource = "UI.Report1.rdlc" '清空报表数据源; ReportViewer1.LocalReport.DataSources.Clear() '给参数赋值; '给参数赋值 Dim params1() As ReportParameter = {New ReportParameter("ManagerId", ManagerId), New ReportParameter("DateNow", DateTime.Now.ToString("yyyy-MM-dd")), New ReportParameter("SaleCount", SaleCountSum), New ReportParameter("RefundCount", RefundCountSum), New ReportParameter("RechargeSum", RechargeSum), New ReportParameter("RefundSum", RefundSum)} '传递报表中的参数集合 ReportViewer1.LocalReport.SetParameters(params1) Me.ReportViewer1.RefreshReport()
大家可以根据自己的想象力自行美化,添加图片或者线条,我在这里就不展示了。(如果有看不懂的地方,请留言,编者会为大家一一解答)
小结:
1、报表制作是一个小马过河,自己探索的过程,深浅,难易,只有自己尝试过了才知道。
2、即使走在别人后面,我们也可以另辟蹊径,勇于探索是不分早晚的。