【机房收费系统】周结账单报表实现

   【背景】

在上一篇介绍了日结账单报表的实现,而周结账单报表相对于日结账单报表的实现比较复杂,因为它涉及到参数的添加,并且要根据两个日期里的时间段查询数据库里的数据并把数据显示在报表里,这个时候报表的实现需要我们用代码实现。首先我们看一下实现成功的报表。

   【机房收费系统】周结账单报表实现_第1张图片


【制作过程】


1、添加参数(如何添加新的报表,为报表添加数据源已在上篇介绍了,在这里就不重复了)。在这里需要注意的是,所有的参数都选这文本格式。

                        【机房收费系统】周结账单报表实现_第2张图片      

          


2、给报表添加参数,拖拽至报表里的合适位置即可。

          【机房收费系统】周结账单报表实现_第3张图片


3、为报表里添加好的参数添加表达式,选中参数在右击弹出框里选中表达式即可。在表达式里选择,参数类型即可。步骤如下。

    【机房收费系统】周结账单报表实现_第4张图片

      【机房收费系统】周结账单报表实现_第5张图片

      【机房收费系统】周结账单报表实现_第6张图片


4、代码部分

这个时候报表的制作也算是告一段落,直接在窗体添加报表,注意不要选择数据源,数据源用代码添加,下面是代码部分。

     

Imports Microsoft.Reporting.WinForms
Imports System
Public Class CheckWeekUI

    Private Sub CheckWeekUI_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.ReportViewer1.RefreshReport()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        '终止日期不能小于起始日期
        If DTP2.Value < DTP1.Value Then
            MsgBox("终止日期不能小于起始日期")
            DTP2.Focus()
            Exit Sub
        End If
        '  Dim check As New Model.CheckEntity
        Dim strStartDate As String = DTP1.Value.Date.ToString()
        Dim strEndDate As String = DTP2.Value.Date.ToString()
        Dim dt As New DataTable
        Dim checkBll As New BLL.CheckBLL
        dt = checkBll.SelectCheck(strStartDate, strEndDate)

        If dt.Rows.Count > 0 Then
            '定义报表数据源
            Dim rptDataSource As New ReportDataSource
            '数据源的名称
            rptDataSource.Name = "DataSetWeek"
            rptDataSource.Value = dt
            '说明reportview承载的报表名
            ReportViewer1.LocalReport.ReportEmbeddedResource = "Jifang.UI.CheckWeekReport.rdlc"
            '设置三个参数的值
            Dim StartDate As ReportParameter = New ReportParameter("startTime", strStartDate)
            ReportViewer1.LocalReport.SetParameters(New ReportParameter() {StartDate})
            Dim EndDate As ReportParameter = New ReportParameter("endTime", strEndDate)
            ReportViewer1.LocalReport.SetParameters(New ReportParameter() {EndDate})
            Dim userID As ReportParameter = New ReportParameter("UserID", LoginUI.txtUserName.Text.Trim())
            ReportViewer1.LocalReport.SetParameters(New ReportParameter() {userID})
            '清空Reportview的数据源
            ReportViewer1.LocalReport.DataSources.Clear()
            '加载Reportview的数据源
            ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
            '刷新Reportview
            Me.ReportViewer1.RefreshReport()
        Else
            MsgBox("这段时间内没有您要的查询内容,请重新选择时间!")
            Exit Sub
        End If

    End Sub
End Class
  这个时候就算是完成了,可以运行检测了。Good lock!

     【小结】

  报表的操作,我从不懂,到现在的还算是懂得一些运用,从中也看了不少同学的博客,也问了一些同学,当我问到思思的时候,思思说这个还是你自己去了解吧,我怪她对我太恨,可是没有她对我的“恨”,我也不会从中懂得那么多,还是感谢思思对我的恨啊,不然我也不会去看大量的博客,从中寻找我要的信息,从中学到不少内容。事还是自己的,得自己去想办法解决,这样才会收获更多。

     

   

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