rdlc报表的使用

RDLC报表的使用

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

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

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

 

一、制作步骤:

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

       2.添加数据源

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

 

 

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

 

 

 

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

 

 

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

 

 

 

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

 

 

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

 

 

3.报表浏览器

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

 

4.建立报表文件

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

 

 

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

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

 

 

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

 

 

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

 

[vb] view plaincopyprint?
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  

二、运行结果

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

 

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值