@H_502_2@报表制作完成,接下来继续优化。
@H_502_2@第一行为列标题,第二行为数据关联行,即与数据库中数据的关联,鼠标放到第二行每个单元格时,单元格右上角会出现一个小图标,点击则可以为该单元格以及该单元格所在的整列关联数据集中的数据。然后设计报表的一些细节,如标题、参数、时间等,如下图所示:
@H_502_2@
@H_502_2@设置参数:
@H_502_2@
@H_502_2@然后再说说一些设置的细节:@H_502_2@字体设置和排列对齐。
@H_502_2@
@H_502_2@给报表添加统计行。这个是报表比较好的功能,自动统计数据。首先先添加一行,然后在对应每一列的下面相应的函数公式:
@H_502_2@
@H_502_2@
@H_502_2@
@H_502_2@备注:这里会遇到一个问题:如果表达式中不写Val()函数,可能导致计算结果出现“错误号”提示。
@H_502_2@
@H_502_2@
@H_502_2@
@H_502_2@接下来再说代码。由于绑定数据源,代码很简单,只在U层写代码就可以。
@H_502_2@
'在本代码层首先要添加以下引用 Imports System Imports Microsoft.Reporting.WinForms Public Class FrmAccountWeek Private Sub btnInquiry_Click(sender As Object,e As EventArgs) Handles btnInquiry.Click Me.T_AccountinfoTableAdapter.Fill(Me.AccountDataSet.T_Accountinfo,dtpStart.Value,dtpEnd.Value) Dim params As ReportParameter()'设置报表中的参数集合(注意:这里的参数和报表中的参数大小写和数据类型都要一致) params = {New ReportParameter("DateStart1",dtpStart.Value.ToShortDateString()),New ReportParameter("DateEnd1",dtpEnd.Value.ToShortDateString())} '传递报表中的参数集合 ReportViewer1.LocalReport.SetParameters(params) Me.ReportViewer1.RefreshReport() End Sub
@H_502_2@接下来,还有非常重要的一步。重新单击第一步添加的ReportViewer空间,点击右上角的小三角,检查是不是选择了报表,在“选择报表”后,窗体下方会出现三个控件。如下图:
@H_502_2@
@H_502_2@右击上图红框的控件,进行配置,如下图:
@H_502_2@
@H_502_2@在SELECT语句中插入下图红框中的WHERE语句,点击完成。
@H_502_2@
@H_502_2@备注:写入WHERE sql语句是对应代码中的时间控件。通过时间控件传递参数查询。如图所示:
@H_502_2@
@H_502_2@至此,报表就大功告成了。@H_502_2@这只是其中一种实现报表的方法,比较简单的绑定数据源。下面还会接着说:用三层和sql语句来实现报表的功能。
@H_502_2@小结:
@H_502_2@ 自己研究了2天时间,看了很多资料,才把报表基本功能整明白了。有时候怀疑自己是不是很笨。总是花费很多时间去做别人轻松就能完成的事情。不过还好,功夫不负有心人,我最后还是成功学会了。哈哈~~