引言
在第一次机房中结账中报表的实现是借助了第三方软件——Gid++Report,想想到时机房的时候报表就是个比较困难的地方,在重构的时候再次遇到报表的时候心里还是提高紧惕的,但是看到师哥师姐的博客的时候发现他们都是用的VS自带的报表,并且非常的容易实现,这些就放心了,于是就快乐的进入了结账阶段。但是现实总是那么的残酷,在实现的过程中又遇到了一个很大的问题,这个问题困扰了我3天,下面和大家分享:
报表实现——方法一
这个方法是我首先选择的一个,因为这个方法我们几乎不用写代码,直接把查询的sql语句写到数据集里面就可以轻松实现,这也是我选择这个方法的原因。具体过程参考我师父的博客《VS制作报表》,这篇博客写的非常详细!这是我在调错的过程中发现的这篇博客,在这推荐个大家。我们只需要在U层写一些代码用来传入参数即可,系统会自动生成两行代码如下:
Me.CheckOut_InfoTableAdapter.Fill(me.DataSet1.CheckOut_Info,ThisDayPay.Prodate)
Me.ReportViewer1.RefreshReport()
当我们用断点调试的时候会发现,当走完第一条语句后就不会执行第二条语句,这样的结果就是我们的报表中没有数据,但是我们在报表中预览数据的时候有数据,经过3天的调试最终以失败而告终,不知各路大神有没有高招,我们探讨一下!
报表实现——方法二
既然第一种方法不能成功当时我们不能让这么点事给憋死啊,于是开始寻找另一条路来实现我的报表功能,当上天给你关闭一扇门的时候总是会为你打开一扇窗,下面就和大家分享一下我是怎么通过这扇窗来实现我们的报表功能的。
添加报表的详细过程:
在工具栏中的下方找到工具栏,将上面的表直接拖到右边白框中,得到如下界面
在此界面中给自己的数据集命名,然后点击新建,得到如下界面
点击下一步,直到出现以下界面:
单击新建连接,出现以下界面:
点击确定后,选择下一步,出现以下界面:
选择我们需要表后,单击完成出现以下按钮,再次出现以下界面,现在我们会发现在红框内已经有我们我们需要的数据源:
点击确定后,就会出现我们的报表了,如下图
我们可以选择我们需要的字段来填充报表中的数据,自己修改表头名称,并且我们可以通过窗口左边的报表数据来给报表添加参数,像制表日期等,如下图:
到此我们的报表大概的雏形就有了,其余的就根据自己的爱好来美化自己的报表了,下面来看一下是怎样通过代码将数据库中的数据添加到报表中的,U层代码如下:
Dim rptDataSource As New ReportDataSource '设置报表数据源名称 rptDataSource.Name = "DayCheckDataSet" '设置报表数据源实例 rptDataSource.Value = dt '设置嵌入报表的资源的名称 ReportViewer1.LocalReport.ReportEmbeddedResource = "UI.DayCheckReport.rdlc" '清空报表数据源 ReportViewer1.LocalReport.DataSources.Clear() '添加报表数据源 ReportViewer1.LocalReport.DataSources.Add(rptDataSource) Dim params() As ReportParameter = { New ReportParameter("MakeDate", Date.Today), New ReportParameter("MakeUser", Entity.PublicVariables._username) } '传递报表中的参数集合 ReportViewer1.LocalReport.SetParameters(params) Me.ReportViewer1.RefreshReport()
易错点分析:
错误一:
错误来源:
ReportViewer1.LocalReport.ReportEmbeddedResource = <strong><span style="color:#ff0000;">"
在这行代码中我们加载的报表的名称和我们添加的报表的名称不对应
错误二:
错误来源:
rptDataSource.Name ="DayCheckDataSet1"
在加载报表数据源的时候,数据源名称和我们在建立数据源的名称不一致!这个原因还可能导致我们只能加载我们报表的表头但是不能显示数据。
小结
每一次做报表都有意想不到的错误,但是每次都有很多的收获,这也许就是我们提倡的在错误中成长吧!像报表和导出Excel这些功能是我们在以后都常用的一些功能,所以我们必须很好的掌握,现在我们遇到的错误越多在以后我们做起来就会更加的顺手,在博客中遗留的问题我会继续寻找解决办法,等解决后会立即更新解决办法,也希望广大读者能给一些建设性意见!!!!