机房收费--报表设计

            报表是用来向上级报告的表格,其最根本的特点就是“多样格式+动态数据”,在vb.net中的vs编辑器中提供了报表设计器,下面针对机房的结账报表进行探讨。


【界面设计】


        报表主窗体的设计并不复杂,主要用到了Reportviewer控件,该窗体很好的将,打印,打印预览,保存等功能进行了很好的封装。如下图:机房收费--报表设计_第1张图片

     报表的添加可以从两个方法进行考虑,一是从ReportViewer

机房收费--报表设计_第2张图片

             另一种点击U层所在的文件夹进行添加:右击添加--新建项--reporting--报表向导。


       【建立数据集】

         选择创建报表向导后:

         机房收费--报表设计_第3张图片

        选择数据库---数据集---新建连接,下一步:                          

                                        机房收费--报表设计_第4张图片

       下一步,选择要使用的数据表、视图或存储过程:

                                 机房收费--报表设计_第5张图片



   【界面设计】


            报表的界面设计利用工具箱里面报表项来添加即可,这里用到了文本框,图表和表。矩形和表有相似的功能,都可以动态的添加

机房收费--报表设计_第6张图片

           参数问题:

         1、自带函数用&表示,如上图中的制表时间。

         2、传递参数用@表示,如上图的开始时间和结束时间,实参从实际窗体的代码中实现。

         3、数据库中参数[]包围,上图表中的数据均为数据库字段。

         4、汇总参数,例如【AllCash】的汇总,右击,添加总计在下一行就自动添加【sum(AllCash)】的汇总项


       【代码实现】


         代码实现首先要在Reportviewer控件中添加上自己设计的报表:机房收费--报表设计_第7张图片

    如果想要更换报表要把下面的数据集删掉以免造成混乱,重新选择数据源,绑定数据。

    报表如果没有包含必须从D层获得数据的实参的话在U层添加代码就完全可以完成了,它提供了可以直接与数据库建立连接的select语句生成器:

    1.选择上图下面的数据集进行配置

                    

     这里有两个函数,一个Fill(填充数据),一个GetData(得到数据),右击击完成select语句配置

                            机房收费--报表设计_第8张图片

              机房收费--报表设计_第9张图片

     点击查询生成器可以对生成的select语句添加添加参数构成查询条件,如下图2:

         机房收费--报表设计_第10张图片

     这样在我们的主窗体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控件把繁琐的打印,保存功能进行了良好的封装,另外还提供对数据库访问的接口,极大的方便了我们的编码旅程。这对日后我们学习底层架构是一个良好的启发。


你可能感兴趣的:(报表,编辑器,界面设计)