导读:进行完了日结报表的制作,大松一口气。不过,刚开始看着周结账单中的两个参数问题,也是愁了很久。不过,只要思想不滑坡,办法总比困难多。接下来,就写写我制作周结账单报表的过程。
一、添加参数
1,在日结账单中,报表已经是这个样子。
2,给报表添加参数。在报表数据中,右击参数,选择添加。
备注:有时候可能会没见着报表数据,打开视图,最下面选择报表数据。
3,设置参数属性。
注意:在选择数据类型时,有日期时间型,但这里我用的是文本。因为在实际应用中我只运用了日期,而如果将这边的参数类型设置为日期时间,那在U层的参数赋值就会有点小问题(后面会跟着时间,查询出错)。
4,添加文本框,将参数拖拽过去。如下图
5,为参数附表达式。右击文本框——表达式——常见函数——日期和时间:
到这里,参数的添加就完成了,接下来,就是在代码中的具体应用。
二、实际应用
查询两个日期间的数据不难,这里主要是说明U层中,关于报表的使用。
1,U层控件添加设置
2,代码实现
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"> Private Sub btnQuery_Click(sender As Object, e As EventArgs) Handles btnQuery.Click
'截止日期不能小于起始日期
If DTP2.Value < DTP1.Value Then
MsgBox("截止日期不能小于起始日期")
DTP2.Focus()
Exit Sub
End If
Dim strStartDate As String = DTP1.Value.Date.ToString()
Dim strEndDate As String = DTP2.Value.Date.ToString()
Dim listCheckInfo As New List(Of Model.CheckInfoM)
Dim FCheck As New Facade.CheckOutFA
listCheckInfo = FCheck.QueryByRDate(strStartDate, strEndDate)
'填充报表
'返回的泛型集合为0,则里边没有东西
If listCheckInfo.Count > 0 Then
'定义报表数据源
Dim rptDataSource As New ReportDataSource
'数据源的名称,也就是连接数据库时设置的数据集名称
rptDataSource.Name = "DataSet1"
rptDataSource.Value = listCheckInfo
'说明ReportViewer承载的报表名
ReportViewer1.LocalReport.ReportEmbeddedResource = "Charge.UI.ReportWeek.rdlc"
'设置两个参数的值
Dim StartDate As ReportParameter = New ReportParameter("StartDate", strStartDate)
ReportViewer1.LocalReport.SetParameters(New ReportParameter() {StartDate})
Dim EndDate As ReportParameter = New ReportParameter("EndDate", strEndDate)
ReportViewer1.LocalReport.SetParameters(New ReportParameter() {EndDate})
'清空ReportViewer的数据源
ReportViewer1.LocalReport.DataSources.Clear()
'加载ReportViewer的数据源为rptDataSource
ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
'刷新ReportViewer
Me.ReportViewer1.RefreshReport()
Else
MsgBox("这段时间内没有您要的查询内容,请重新选择时间!", MsgBoxStyle.Exclamation, "警告")
Exit Sub
End If
End Sub
</span></span>
三、个人收获
在周结账单中,只是添加了两个参数,但在刚开始的时候,还是让自己忙活了很久。好在后来终于是给解决了,在这途中,我觉得还是得相信自己的能力,有时候做着做着就烦了,就不想做。但,希望就在你前方。或许,再多查一个资料,再多问一个同学,更甚至是,自己再多憋一分钟,问题就能解决。