在第一次机房的时候,由于VB没有自带的报表,所以我们用的是第三方 的报表控件!设计这个报表真是用了我很多的时间!这次重构中,.net版的开发环境VS中就提供了一个现成的报表控件,再经过和数据库的绑定就可以了,不用写多余的代码,这样很是方便,所以下面让我们来见识一下!
第一步:
添加报表控件,在工具箱中:
右击U层添加新建项,然后从里面选择报表这一项:如图:
然后得到如下图的效果:
- <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>Me.SettleAccountsInfoTableAdapter.Fill(Me.MyChargeDataSet.SettleAccountsInfo)
- Me.ReportViewer1.RefreshReport()</strong></span>@H_502_285@
但是对于周结账单,我们要点击查询按钮,根据日期控件中的内容去查找数据库中适合的数据显示到报表中。右击报表数据窗体中的参数-----添加参数(本例为:rptStartDate ),再加上下面的代码就可以实现此功能了!
<span style="font-family:KaiTi_GB2312;font-size:18px;"><strong> Dim selectSA As New Facade.SettleAccountFacade
- Dim dt As New DataTable
- Dim enSettleAccountInfo As New Entity.SettleAccountsEntity
- Dim enSettleAccount As New Entity.SettleAccountsEntity
- enSettleAccount.SAdate = DateTimePicker1.Text.Trim
- enSettleAccountInfo.SAdate = DateTimePicker2.Text.Trim
- '给DataTable赋值
- dt = selectSA.fSelectSA(enSettleAccountInfo,enSettleAccount)
- '定义报表数据源
- Dim rptDataSource As New ReportDataSource
- rptDataSource.Name = "DataSet1"
- rptDataSource.Value = dt
- '说明ReportViewer承载的报表名
- ReportViewer1.LocalReport.ReportEmbeddedResource = "UI.Report2.rdlc"
- '设置两个参数的值,这两个参数是两个日期参数,通常设置为文本类型的。
- Dim rptStartDate As ReportParameter = New ReportParameter("rptStartDate ",DateTimePicker1.Text.Trim)
- ReportViewer1.LocalReport.SetParameters(New ReportParameter() {rptStartDate })
- Dim rptEndDate As ReportParameter = New ReportParameter("rptEndDate ",DateTimePicker2.Text.Trim)
- ReportViewer1.LocalReport.SetParameters(New ReportParameter() {rptEndDate })
- '清空ReportViewer的数据源
- ReportViewer1.LocalReport.DataSources.Clear()
- '加载ReportViewer的数据源为rptDataSource
- ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
- '刷新ReportViewer
- Me.ReportViewer1.RefreshReport() </strong></span>@H_502_285@
可能出现的错误:
小结: