VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统

之前做机房时使用的Grid++报表,现在重构时使用Visual Studio,当然得使使它自带的rdlc报表。开始在网上找资料时,搜索的关键词一直是reportviewer,因为只看到这么一个控件,也不了解它具体是怎么工作的。感觉资料很少,后面才发现搜索rdlc报表时就大不一样了。资料也多起来。reportviewer是用来显示报表的。rdlc是报表文件,它可以嵌在reportviewer中,主要与数据库进行绑定。我以机房收费系统作为一个实例,讲解一下我是如何实现。

1.在UI项目中新建windows窗体文件,命名为frmWeekCheck.vb ,然后再新建一个rdlc文件,命名为WeekCheck.rdlc。效果图如下:VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第1张图片

2.添加数据源。给rdlc报表建立数据源和数据集。先配置数据源:如图:

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第2张图片

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第3张图片

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第4张图片

因为之前我已经配置过数据连接,直接选择就可以。如果没有配置过,则通过新建连接,建立。这里不再介绍。

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第5张图片

连接到数据库以后,会让你选择你要建立的数据集中包含的对象。这里我选择T-CheckDay表。点击完成即可。

在“报表数据”窗口中添加可以看到你添加的数据源和数据集,这里也可以编辑,操作基本类似。

3.设计rdlc报表。

主要是两种工具:文本框和表。

文本框中可以通过右击“文本框属性”设计一些表达式:比如当前时间。如图:

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第6张图片

选择值这一栏的函数按钮,设置函数。如图:

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第7张图片

选择Now函数,可以设置当前时间。注意上面的表达式中一定要有“=”。

文本框中也可以添加参数。在“报表数据”窗口中右击参数文件夹,则会出现下图:

VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统_第8张图片

当然这里添加了参数,那么在代码中就需要传入参数。随后在代码详细介绍。

显示数据主要的就是表这个工具。当你拖入一个表工具后,如下图:


在红色的框中有一个小小的数据库,单击它选择要添加的字段。那么表头那一栏也相应添加,当然可以修改它的值。默认产生的两行三列的表格。也可以添加行添加列。

4.在frmWeekCheck.vb窗体中,添加按钮的Click事件。代码如下:

Private Sub btnCheck_Click(sender As Object, e As EventArgs) Handles btnCheck.Click
        Dim bSCheck As New BLL.CheckBLL
        Dim dt As New DataTable
        dt = bSCheck.SWeekDay(dtpBeginDate.Text.Trim, dtpEndDate.Text.Trim)   '这里是通过数据库查询出我需要的表的内容。
        txtRemainCash.Text = dt.Rows(0)(1)
        Dim rpDataReport As ReportDataSource = New ReportDataSource("DataSetWeekCheck", dt)  '为报表定义一个数据源,以dt来实例化它。
        ReportViewer1.Visible = True
        Dim rtpParaA As ReportParameter = New ReportParameter("rtpParaBeginDate", dtpBeginDate.Text.Trim)   '这里就是定义了一个报表参数,并确定将什么值传入。
        Dim rtpParaB As ReportParameter = New ReportParameter("rtpParaEndDate", dtpEndDate.Text.Trim)
        ReportViewer1.LocalReport.SetParameters(New ReportParameter() {rtpParaA})                       '设置reportviewer控件的参数。当然这里需要相对应。
        ReportViewer1.LocalReport.SetParameters(New ReportParameter() {rtpParaB})
        ReportViewer1.LocalReport.DataSources.Clear()
        ReportViewer1.LocalReport.DataSources.Add(rpDataReport)                '这里将报表设定为Reportviewer的数据源。
        ReportViewer1.RefreshReport()

    End Sub
5.总结:开始的时候特别晕,总结后就渐渐清晰了。其实有三层关系:reportviewer控件,rdlc报表,数据库。我们要将数据库中的某些元素作为数据源添加到rdlc报表中。而报表本身也是reportviewer控件的数据源。在代码中体现得最为明显:
Dim rpDataReport As ReportDataSource = New ReportDataSource("DataSetWeekCheck", dt)
ReportViewer1.LocalReport.DataSources.Add(rpDataReport)


你可能感兴趣的:(VS2012中的ReportViewer和rdlc报表的使用实例---机房收费系统)