前言:在机房个人重构的过程中,报表算是一个比较难弄的地方。之前做VB版机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件—ReportViewer。刚着手去做的时候,根本不知道如何下手,后来站在巨人的肩膀上,终于缕出点眉目了。
在VB版的机房收费系统中,报表应该是每个人心中的噩梦。要不是弄不出来,要不就是弄出来了,里边的数据也不对。那么,到我们现在的VB.NET版机房收费系统中,这个像噩梦一样存在的东西,又应该是什么样的呢?
设计报表的具体步骤:
1、首先,添加报表控件:ReportViewer
2、添加和编辑编辑RDLC文件:
①点击ReportViewer右上的三角,选择“设计新报表”
②在“报表向导”中,我们可以重命名数据集的名称,然后选择数据源新建
③然后在“配置数据源向导”中,选择数据库,一直“下一步”点下去
④在“选择您的数据连接”中,选择“新建连接”
⑤在“添加连接”中,进行数据源的设置
⑥然后选择“是”之后,会出现下边的对话框,直接点下一步即可
⑦在“选择数据库对象”中,选择你报表需要用到的数据库中的表
⑧点击“完成”后,会回到“报表向导”的对话框,然后点击下一步即可
⑨在这里,直接把需要的字段(报表中的字段)按顺序拖入到“∑值”即可。
⑩下边是我设计好的报表
其中,在报表中的一些细节:标题、参数、时间等
添加文本框:添加标题 “机房收费系统结账汇总” 就是在【工具箱】中加入文本框就可以。
添加内置字段:如下图,制表日期就是报表中自带的函数,可以在【报表数据】的内置字段中添加。然后右击选择表达式,可以对其设定属性
参数:可以自己进行添加
然后在报表窗体上,在报表控件ReportViewer的右上方,点击三角
至此,整个报表的设计就算完成了。
下边是代码部分(报表刷新部分的U层代码)
'**********************************************
' 文 件 名:frmDayAmount
' 命名空间:UI
' 内 容:
' 功 能:报表
' 文件关系:
' 作 者:杨晨光
' 小 组:
' 生成日期:2014/9/3 16:16:11
' 版 本 号:V1.0.0.0
' 修改日志:
' 版权说明:
'**********************************************
Imports System
Imports Microsoft.Reporting.WinForms
Public Class frmDayAmount
Private Sub frmDayAmount_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: 这行代码将数据加载到表“ChargeSystemDataSet.T_DayAmount”中。您可以根据需要移动或删除它。
Me.T_DayAmountTableAdapter.Fill(Me.ChargeSystemDataSet.T_DayAmount)
Me.ReportViewer.RefreshReport()
End Sub
'刷新报表
Private Sub btnR_Click(sender As Object, e As EventArgs) Handles btnR.Click
'定义两个变量,把时间赋值给它们
Dim StartTime As String = Format(DtpStart.Value, "yyyy-MM-dd")
Dim EndTime As String = Format(DtpEnd.Value, "yyyy-MM-dd")
'判断两个时间的大小
If StartTime > EndTime Then
MsgBox("起始时间不能超过终止时间,请重新选择!", MsgBoxStyle.Exclamation, "警告")
Exit Sub
End If
Dim myList As List(Of Entity.DayAmountEntity) '定义一个泛型集合,用来承载返回的数据
Dim BUser As New BLL.DayAmountBLL '实例化B层的一个新对象
myList = BUser.Check(StartTime, EndTime) '调用B层的方法,并将两个时间变量传给它
'返回的泛型集合为0,则里边没有东西
If myList.Count = 0 Then
MsgBox("这段时间内没有您要的查询内容,请重新选择时间!", MsgBoxStyle.Exclamation, "警告")
Exit Sub
Else
'声明一个报表数据源对象
Dim rptDateSource = New ReportDataSource
'设置报表数据集名称
rptDateSource.Name = "DataSetAmount"
'设置报表数据源实例
rptDateSource.Value = myList
'设置嵌入报表的资源名称
ReportViewer.LocalReport.ReportEmbeddedResource = "UI.Report1.rdlc"
'清空报表数据源
ReportViewer.LocalReport.DataSources.Clear()
'添加报表数据源
ReportViewer.LocalReport.DataSources.Add(rptDateSource)
'刷新报表
Me.ReportViewer.RefreshReport()
End If
End Sub
End Class
总结
其实,整张报表做完,发现也没有想象中的那么难。有时候,有些事情,只要迈开第一步,放手去做,你会发现,原来世界也是挺美好的,因为你已经成功了一半了。