rdlc报表的使用

RDLC报表的使用

       机房收费系统这是第三遍重构了,但每当到报表这块都是让我很纠结,这次合作开发亦是如此。在学习vb6时,使用的报表是第三方的Grid++Report;VB.Net个人版以及合作版使用的是在VS .NET自带的报表设计器,Microsoft 将这种报表的后缀定为RDLC.

        RDLC(Report Definition Language Client)是微软基于RDL在.NET上继续完善的结果。

        下面就以机房收费系统的“账单查询”为例,开始制作一张简单报表,显示结果如下:

 

一、制作步骤:

       1.在建好的VS窗体项目“机房收费系统”建立一个Form窗体:账单查询。

       2.添加数据源

       在左边的窗体内选择“添加新数据源”或在菜单上操作选择“添加新数据源“。

rdlc报表的使用_第1张图片

 

 

        选择后出现对话框,选择数据库,进入下一步。

rdlc报表的使用_第2张图片

 

rdlc报表的使用_第3张图片

 

 

        选定数据源后,指定数据库文件,并进行测试,如果连接不通,请检查你的软件配置。

 

rdlc报表的使用_第4张图片

 

      进行下一步,至显示出库文件内的表及视图,然后打开表,并选择其中的T_CheckOut,选择完成。

 

rdlc报表的使用_第5张图片

 

 

       在数据源窗口中显示出所选择表及表内字段,以备使用。

rdlc报表的使用_第6张图片

 

 

        同时在资源管理器窗口中,也可以看到新增加的数据文件。

 

rdlc报表的使用_第7张图片

 

3.报表浏览器

        在新建的窗体内,放入报表浏览器控件。

rdlc报表的使用_第8张图片

 

4.建立报表文件

    选中报表浏览器控件后,在控件的右上角会出现一个小三角,出现一个菜单,选择“建设新报表”或在解决方案资源管理器中添加一个新的报表文件:

 

rdlc报表的使用_第9张图片

 

    设计报表的过程此文写的很详细,不明白的可以参考:VB.NE rdlc报表的使用 ,在此就不赘述。

    我的报表模板的最后显示结果如下图:

rdlc报表的使用_第10张图片

 

 

    这里提一下,数据行数据填充,在其“表达式”中可以看到:

rdlc报表的使用_第11张图片

 

 

 4.编码部分(这里只贴了界面层的代码):

 

Imports System
Imports Microsoft.Reporting.WinForms

Public Class QueryBillUI

    Dim myFA As New Facade.BillManagementFA
    Dim dt As DataTable

    ''' <summary>
    ''' 窗体加载事件
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub WeekBillUI_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Me.ReportViewer1.RefreshReport()

        Dim num As Integer
        '获取操作员用户名和真实姓名

        dt = myFA.SelectUser()

        '获取cboUserID集合中的值
        cboUserID.Items.Add("所有")   '默认值:“所有”,并将其转换为"*"
        num = dt.Rows.Count           '从数据库中读取过来的值。
        While num > 0
            cboUserID.Items.Add(Trim(dt.Rows(num - 1)("用户名")))   '获取DataTable表中某行某列的值赋给cboUserID集合中
            num = num - 1
        End While
        cboUserID.SelectedIndex = 0   '设置组合框的默认值为“所有”。

        Me.ReportViewer1.RefreshReport()
    End Sub

    '查询
    Private Sub btnQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuery.Click

        Dim enCheckOut As New Entity.CheckOutEntity
        Dim strUserID As String  '此变量用于保存“用户名”

        strUserID = cboUserID.Text.Trim()
        If strUserID = "所有" Then
            strUserID = "*"
        End If

        enCheckOut.UserID = strUserID
        enCheckOut.BeginDate = Format(dtpStartDate.Value, "yyyy-MM-dd")
        enCheckOut.EndDate = Format(dtpEndDate.Value, "yyyy-MM-dd")

        Try
            dt = myFA.QueryBill(enCheckOut)

        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString())
            Return
        End Try

        '声明一个报表数据源对象
        Dim rptDataSource As New ReportDataSource

        '设置报表数据源名称
        rptDataSource.Name = "T_CheckOut"
        '设置报表数据源实例
        rptDataSource.Value = dt

        '设置嵌入报表的资源的名称
        'ReportViewer1.LocalReport.ReportEmbeddedResource = "UI.ReportBill.rdlc"
        ReportViewer1.LocalReport.ReportEmbeddedResource = "ReportBill.rdlc"
        '清空数据源
        ReportViewer1.LocalReport.DataSources.Clear()
        '添加报表数据源
        ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
        '设置报表中的参数集合,传递的参数,名字大小写必须一致。
        '且其本身数据类型必须与报表中定义的数据类型也必须一致。
        'Dim params() As ReportParameter = {New ReportParameter("DateStart", Date.Parse(dtpStartDate.Text)), New ReportParameter("DateEnd", Date.Parse(dtpEndDate.Text))}
        Dim params() As ReportParameter = {New ReportParameter("DateStart", dtpStartDate.Text),
                                            New ReportParameter("DateEnd", dtpEndDate.Text),
                                            New ReportParameter("UserID", LoginUI._userID)}

        '传递报表中的参数集合
        ReportViewer1.LocalReport.SetParameters(params)
        '刷新报表
        Me.ReportViewer1.RefreshReport()
    End Sub
End Class


二、运行结果

    程序执行后,界面的运行结果如下图:

rdlc报表的使用_第12张图片

 

 

 

        此文重点部分介绍的是“配置数据源”和“建立报表文件”中的参数设定。因为个人在这两部分理解不是很好,所以这次总结在这两部分画的笔墨有些多。

 

        参考的文献:

       崔成龙— VB.NET rdlc报表的使用:http://blog.csdn.net/xiaoxian8023/article/details/7106588

        杨长收—VB.NET实现ReportViewer显示参数化查询结果:http://blog.csdn.net/a1314517love/article/details/7320672

    邢金聪—图解机房收费系统报表制作的全过程:http://blog.csdn.net/xjc1278003262/article/details/10077633

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(rdlc报表的使用)