之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件。
刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了。
以下把在VisualStudio(我用的是VisualStudio2013,假设与您使用的版本号不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能具体地记录下来,供刚開始学习的人学习參考。
做事要有全局观,先看一下成品,做好的报表例如以下图:
事实上可以达到这种效果须要做双方面的工作:加入报表控件ReportViewer和加入编辑RDLC文件。
个人感觉RDLC文件的作用是绑定数据库中须要的数据,ReportViewer则是引用RDLC文件来显示RDLC文件从数据库中绑定的数据。
1、加入报表控件ReportViewer:
加入报表控件非常easy:工具箱—报表—ReportViewer控件。
2、加入和编辑编辑RDLC文件:
系统找不到指定的文件】这个错误,那么能够下载安装SharedManagementObject.msi
。其它文本如“開始时间:”、“结束时间:”等也是一样;
'在本代码层首先要加入下面引用
Imports System
Imports Microsoft.Reporting.WinForms
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click'依据时间段查询结账记录Dim startTime As String = Format(dtpBegin.Value, "yyyy-MM-dd")Dim endTime As String = Format(dtpEnd.Value, "yyyy-MM-dd")Dim dt As New DataTable'对象【checkReportFacade】的【QueryCheckOut】方法功能是依据两个日期,查询此时间段的结账记录dt = checkReportFacade.QueryCheckOut(startTime, endTime)'声明一个报表数据源对象Dim rptDateSource = New ReportDataSource'设置报表数据集名称rptDateSource.Name = "DataSetCheckoutReport"'设置报表数据源实例rptDateSource.Value = dt'设置嵌入报表的资源名称reportViewer.LocalReport.ReportEmbeddedResource = "UI.CheckReport.rdlc"'清空报表数据源reportViewer.LocalReport.DataSources.Clear()'加入报表数据源reportViewer.LocalReport.DataSources.Add(rptDateSource)'设置报表中的參数集合(注意:这里的參数和报表中的參数大写和小写和数据类型都要一致)Dim strUserID As String = Entity.UtilUserEntity.UtilUser.UserIDDim params As ReportParameter()params = {New ReportParameter("startTime", startTime),New ReportParameter("endTime", endTime),New ReportParameter("userId", strUserID)}'传递报表中的參数集合reportViewer.LocalReport.SetParameters(params)'刷新报表Me.reportViewer.RefreshReport()End Sub
温馨提示:代码中的数据集名称DataSetCheckoutReport一定要与刚開始创建RDLC文件时设定的数据集名称DataSetCheckoutReport一样,否则将会出现“尚未为数据源***提供数据源实例”的错误。