机房收费系统(VB.NET)——超详细的报表制作过程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/38356927

        之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件。刚开始当然对这块功能很不熟悉,不过探究了一段时间后还是把它做出来了。

       下面把在VisualStudio(我用的是VisualStudio2013,如果与您使用的版本不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能详细地记录下来,供初学者学习参考。

        做事要有全局观,先看一下成品,做好的报表如下图:

        其实能够达到这样的效果需要做两方面的工作:添加报表控件ReportViewer和添加编辑RDLC文件。个人感觉RDLC文件的作用是绑定数据库中需要的数据,ReportViewer则是引用RDLC文件来显示RDLC文件从数据库中绑定的数据。

        1、添加报表控件ReportViewer:

         添加报表控件很简单:工具箱—报表—ReportViewer控件。

        2、添加和编辑编辑RDLC文件:

添加RDLC文件,有两种方法:1、鼠标左击一下刚刚添加的ReportViewer,会发现控件右上角会出现一个黑色的小三角,点击那个小三角→设计新报表:

       如果是第一次创建RDLC文件,那么出来的界面是这样的:

         如图片左上角所示,系统默认新建的这个数据集名称为“DataSet1”,为了命名规范,我们先取消“数据源配置向导”这个窗体,重新命名数据集名称,我的命名为DataSetCheckoutReport:

       命名之后,点击“新建”进入“数据源配置向导”窗口:

        在“ 应用程序将从哪里获取数据?”问题下,选择“数据库”,下一步:

        在“ 要使用哪种类型的数据库模型?”问题下,选择“ 数据集 ”,下一步:

        在“ 应用程序连接数据库应使用哪个数据库连接? ”后点击“ 新建连接 ”:

        如上图,分别选择或输入相应项,测试连接,如果测试成功,则确定,自动返回到“ 数据源配置向导 ”窗体,下一步:

        【拓展】

这个步骤如果您出现了【未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral,PublicKeyToken=89845dcd8080cc91”或它的一个依赖项。系统找不到指定的文件】这个错误,那么可以下载安装SharedManagementObject.msi

        选择需要用到的数据库中的对象,设置DataSet名称,完成,自动返回“ 报表向导 ”窗体,下一步:

       将需要的字段按顺序拖入行组或列组中,由于“∑值”中必须拖入字段,这里我们随便拖入一个字段(如果不需要的话后面还可以改),一直点“下一步”,直到“完成”,RDLC文件的雏形就出来了:

        这里我们不需要用到对每列的sum,所以右键表格的每个行和最后一列不需要的行和列删除,只留下需要的行和列(或者直接把这个表删除,右键插入新的表,然后根据自己的需要编辑),我设计好的表为:

       第一行为列标题,第二行为数据关联行,即与数据库中数据的关联,鼠标放到第二行每个单元格时,单元格右上角会出现一个小图标,点击则可以为该单元格以及该单元格所在的整列关联数据集中的数据。

      下面就开始设计报表的一些细节,如标题、参数、时间等等:

添加文本框:添加标题 “机房收费系统结账单” 其实就是在【工具箱】中加入文本框就可以。其他文本如“开始时间:”、“结束时间:”等也是一样;

添加内置字段:如上图,右下角的《Exp》就是报表中自带的函数,可以在【报表数据】的内置字段中添加,比如我在右下角的这个Exp就是要显示执行报表的时间,时间格式可以自己设定,右键《Exp》—表达式,在“为以下项设置表达式”下输入表达式即可,如我想让它显示的时间格式为“2014-08-08 08:08:08”,则可输入“ =Format(Now,"yyyy-MM-dd hh:mm:ss") ”;

添加参数:另外前面带有@的表达式,就是您的程序中将要传入报表中的参数,比如我想在报表左下角显示制作这个报表的操作员,而这个操作员的用户名只能从程序中获取,上面的开始日期@startTime和截止日期@endTime也是需要从代码中传入。这类参数可以右击【报表数据】的“参数”,来添加参数。

     (注:如果您没有找到【工具箱】或【报表数据】那么就需要去【视图】中添加。)

       下面就到了最后阶段,加上代码,核心代码为(限于篇幅,在这只贴上刷新按钮事件代码):

'在本代码层首先要添加以下引用
Imports System
Imports Microsoft.Reporting.WinForms
Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
        '根据时间段查询结账记录
        Dim startTime As String = Format(dtpBegin.Value, "yyyy-MM-dd")
        Dim endTime As String = Format(dtpEnd.Value, "yyyy-MM-dd")
        Dim dt As New DataTable
        '对象【checkReportFacade】的【QueryCheckOut】方法功能是根据两个日期,查询此时间段的结账记录
        dt = checkReportFacade.QueryCheckOut(startTime, endTime)

        '声明一个报表数据源对象
        Dim rptDateSource = New ReportDataSource
        '设置报表数据集名称
        rptDateSource.Name = "DataSetCheckoutReport"
        '设置报表数据源实例
        rptDateSource.Value = dt
        '设置嵌入报表的资源名称
        reportViewer.LocalReport.ReportEmbeddedResource = "UI.CheckReport.rdlc"
        '清空报表数据源
        reportViewer.LocalReport.DataSources.Clear()
        '添加报表数据源
        reportViewer.LocalReport.DataSources.Add(rptDateSource)

        '设置报表中的参数集合(注意:这里的参数和报表中的参数大小写和数据类型都要一致)
        Dim strUserID As String = Entity.UtilUserEntity.UtilUser.UserID
        Dim params As ReportParameter()
        params = {New ReportParameter("startTime", startTime),
                  New ReportParameter("endTime", endTime),
                  New ReportParameter("userId", strUserID)}
        '传递报表中的参数集合
        reportViewer.LocalReport.SetParameters(params)
        '刷新报表
        Me.reportViewer.RefreshReport()
    End Sub

温馨提示:代码中的数据集名称DataSetCheckoutReport一定要与刚开始创建RDLC文件时设定的数据集名称DataSetCheckoutReport一样,否则将会出现“尚未为数据源***提供数据源实例”的错误。

       最后,重新单击第一步添加的ReportViewer空间,点击右上角的小三角,在“选择报表”后选择您刚制作的报表就大功告成了。到此,一张简单的报表就制作好了

       如果步骤中有错误或不全面的地方,欢迎补充说明。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏破晓之歌

完全媲美sublime的编辑器-Atom 原

前端可视化插件神器,配合谷歌浏览器一起使用。本质是监控文件修改,实时刷新浏览器,需要安装livereload插件和node.js插件,全局刷新

6213
来自专栏编程之旅

PHP开发——yii2多图上传组件的使用

最近在使用yii2开发一个表单页面的时候,有多图上传的需求,稍微找了找这方面的组件,基本都安利fileInput这个组件,于是就尝试着使用这个库来完成后端表单页...

2551
来自专栏极客猴

Django 学习笔记之表单

本文是自己 Django 学习笔记系列中第 8 篇,算是基础知识篇章中最后一篇笔记。后续的笔记内容会相对比较综合。所以建议大家要把前面的内容,包括本篇笔记掌握。...

1053
来自专栏码生

收集

http://blog.csdn.net/fungleo/article/details/77584701

1175
来自专栏向治洪

Vue.js简介

Vue.js简介 Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设...

2857
来自专栏数据小魔方

R语言笔记之——常用数据导入方式简介

因为之前旁听过几节R语言的课程,再加上自己练习数据可视化的需要(特别是可视化包——“ggplot2”),学了些R语言的皮毛。 总觉得基础没打牢,好高骛远、急于求...

3227
来自专栏守望轩

Visual Studio 2008 每日提示(七)

#061、增大编辑器工具提示的字体 原文地址:http://blogs.msdn.com/saraford/archive/2007/10/15/did-yo...

2694
来自专栏编程直播室

Ionic 2 :如何实现列表滑动删除按钮1.创建Ionic2应用2.准备列表数据3.修改主页(HOME)的模版4.创建方法删除数据5.添加一个编辑按钮总结

20510
来自专栏九彩拼盘的叨叨叨

Chrome 插件收藏

Chrome 上有非常多的功能强大的和插件。这些插件让 Chrome 变得更加强大。下面是我常用的一些插件。

2381
来自专栏macOS 开发学习

Mac开发之 Cocoa 绑定 入门

从iOS开发转为Mac OSX应用开发的过程中,cocoa 绑定算是比较大的一个差异,也是OSX上比较实用的技术,cocoa 绑定让开发者节省了大量的代码,可以...

952

扫码关注云+社区