机房收费--报表设计 末蓝、 2022-08-07 05:38 184阅读 0赞 报表是用来向上级报告的表格,其最根本的特点就是“多样格式+动态数据”,在vb.net中的vs编辑器中提供了报表设计器,下面针对机房的结账报表进行探讨。 【界面设计】 报表主窗体的设计并不复杂,主要用到了Reportviewer控件,该窗体很好的将,打印,打印预览,保存等功能进行了很好的封装。如下图:![Center][] 报表的添加可以从两个方法进行考虑,一是从ReportViewer ![20150314194931524][] 另一种点击U层所在的文件夹进行添加:右击添加--新建项--reporting--报表向导。 【建立数据集】 选择创建报表向导后: ![20150315091655100][] 选择数据库---数据集---新建连接,下一步: ![20150315091637032][] 下一步,选择要使用的数据表、视图或存储过程: ![20150315092940828][] 【界面设计】 报表的界面设计利用工具箱里面报表项来添加即可,这里用到了文本框,图表和表。矩形和表有相似的功能,都可以动态的添加 ![20150314195941124][] 参数问题: 1、自带函数用&表示,如上图中的制表时间。 2、传递参数用@表示,如上图的开始时间和结束时间,实参从实际窗体的代码中实现。 3、数据库中参数\[\]包围,上图表中的数据均为数据库字段。 4、汇总参数,例如【AllCash】的汇总,右击,添加总计在下一行就自动添加【sum(AllCash)】的汇总项 【代码实现】 代码实现首先要在Reportviewer控件中添加上自己设计的报表:![20150315094612319][] 如果想要更换报表要把下面的数据集删掉以免造成混乱,重新选择数据源,绑定数据。 报表如果没有包含必须从D层获得数据的实参的话在U层添加代码就完全可以完成了,它提供了可以直接与数据库建立连接的select语句生成器: 1.选择上图下面的数据集进行配置 ![20150315095604808][] 这里有两个函数,一个Fill(填充数据),一个GetData(得到数据),右击击完成select语句配置 ![20150315095731731][] ![20150315100029566][] 点击查询生成器可以对生成的select语句添加添加参数构成查询条件,如下图2: ![20150315100319483][] 这样在我们的主窗体load事件中自动生成两行代码: 'TODO: 这行代码将数据加载到表“DateBill.CheckInfo”中。您可以根据需要移动或删除它。 Me.CheckInfoTableAdapter.Fill(Me.DateBill.CheckInfo) ‘将查询内容填充到控件 Me.DR.RefreshReport() ’更新报表操作 在上图中没有为你的select语句添加限定条件的话,默认搜索表中所有数据,每次登陆该窗体时就加载全部数据。 有限定条件下,再添加一个按钮,对按钮进行事件编辑: Dim startDate, endDate As String '获得起始日期 startDate = Format(dtpStart.Value, "yyyy-m-dd") '与报表中的参数类型一致 endDate = Format(dtpEnd.Value, "yyyy-m-dd") '定义报表数据源 Dim rptDateSource = New ReportDataSource '获得报表数据集名称 rptDateSource.Name = "DateBill" '定义报表参数 Dim param As ReportParameter() param = {New ReportParameter("startDate", startDate), New ReportParameter("endDate", endDate) } '添加报表数据源 DR.LocalReport.DataSources.Add(rptDateSource) '传进参数 DR.LocalReport.SetParameters(param) '将生成的两个函数:fill(填充,注意填充上select条件参数:startDate,EndDate) refreshRepot(更新)利用起来 Me.CheckInfoTableAdapter.Fill(Me.DateBill.CheckInfo, dtpStart.Value, dtpEnd.Value) Me.DR.RefreshReport() 这样对报表操作算是有了一个简单的完成。 【总结】 对报表学习,充分体会了vs对编程的封装思想,Reportviewer控件把繁琐的打印,保存功能进行了良好的封装,另外还提供对数据库访问的接口,极大的方便了我们的编码旅程。这对日后我们学习底层架构是一个良好的启发。 [Center]: /images/20220805/831dfb9ede1441f9b8bed49632272b31.png [20150314194931524]: /images/20220805/21ba0d4d9b69419ca7c62794c290404d.png [20150315091655100]: /images/20220805/7f440d5a908444c0b555cb712a72746c.png [20150315091637032]: /images/20220805/792783b6be52415d89bbf455eee6226d.png [20150315092940828]: /images/20220805/90d5c2c41ab34d5c854cb7950651ea49.png [20150314195941124]: /images/20220805/6843ed3f8e1949a88e685b88a83ddd18.png [20150315094612319]: /images/20220805/4944978626af4c52a38216d455401fd4.png [20150315095604808]: /images/20220805/a2340c1ddba94981a03a938af02bdb66.png [20150315095731731]: /images/20220805/704026f1819446df9a8c5705114fe258.png [20150315100029566]: /images/20220805/c94e270996f342c18b4eb08bb4b6c42c.png [20150315100319483]: /images/20220805/92f894ac40b841eb9cb0804449c0b4c3.png
还没有评论,来说两句吧...