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

之前做机房收费系统用的报表是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也是需要从代码中传入。这类参数可以右击【报表数据】的“参数”,来添加参数。

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

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

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空间,点击右上角的小三角,在“选择报表”后选择您刚制作的报表就大功告成了。到此,一张简单的报表就制作好了

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

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

时间: 2024-08-28 21:30:40

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

机房收费系统VB版(一)——系统分析

      首先,我们先回答两个个问题:         1.机房收费系统"是什么"?         2.机房收费系统应该"干什么"?        我的回答:         1.机房收费系统顾名思义就是一个收费系统.         2.机房收费系统主要任务流程是:注册--充值--上机--下机--退卡.而其他的功能都是各个部分人员主要负责的功能.       然后,我们进一步分析一下这个系统的功能. 我们可以把这个系统比作网吧的收费系统,而它的主要面对对象是学

机房收费系统vb.net之打包与部署(二)

紧接着上篇博客的打包和部署,下面说一下我在XP系统和.net framework2.0平台发布系统的解决办法,对于.net framework2.0的情况,因为大家知道如果用visual studio2013的话,最低的运行平台是2.0但是的代码是在4.5的平台下实现的,要是转换过去,会出很多错误,见下图: 生成后的效果就是会出现很多的错误: 原因就是我之前 敲代码的目标框架是默认的4.5,而改成2.0后差异太大,有很多内部编译都发生了变化,因此这种方法是不可以的,下面是我解决这个问题的一个说了

机房收费系统合作版——VS2013自带报表

机房收费系统已经敲过两次了,每次敲的感觉都不一样,收获也不一样. 第一次敲机房,主要是克服对代码的恐惧,只要将功能实现就行:而第二次,主要就是加入前期对整个系统的分析.设计,然后在实践中理解三层架构以及对设计模式的应用:现在是第三次敲,主要是锻炼我们团队合作的能力,大家的讨论研究,合作交流等.由此可见,我们走的每一步都很重要,都是必不可少的. 今天我们来说一说我们的vb.net中自带的报表. 一.报表的制作 1,我们右击U层所在文件夹添加"新建项". 2,在弹出的的添加新建项窗口中找到

机房收费系统VB版(四)——上下机

在敲系统的过程中,觉得有点困难的是上下机和结账.当理不清关系,没有头绪的时候,我们先画画图吧,把逻辑理清了,思路自然就有了,不会的再去查就可以了.今天我们就先来分析一下所谓的上下机. 一.上机     上机流程图:     解释说明:    (1)判断文本框的内容是否为空,是否为数字,"否"则弹出提示框: (2)若文本框为数字,判断卡号是否注册,"否"则弹出提示框: (3)若卡号已经注册, 判断卡号是否正在上机,"是"则弹出提示框: (4)若卡号

机房收费系统vb.net之打包与部署(一)

从机房重构到如今,我最大的感受就是万事开头难,万事结尾难!开头难是由于那个思路理不清,对三层已经设计模式的应用不够熟悉,结尾难就是打包部署了!这几天非常头疼,以为完毕了代码就大功告成了,但是没想到啊,打包与部署还easy,由于毕竟是在自己的电脑上64位系统和.net framework4.5的编译平台,没什么可改的,就是一步步来,但是到了XP系统上问题就多了,以下就一一的进行解说: 首先,我的Visual studio是2013版本号的,我就按13版本号将一下打包: 第一步:右击解决方式--"加

机房收费系统VB版(三)——窗体设计

在边建表边敲窗体的过程中,遇到很多问题,所以一边改,一边继续进行,最后将窗体改成下边这个模样. 窗体菜单:  窗体功能分布图: 第一次做的功能分析图: 解释说明: 这次画的图与最初画的系统功能分析图不太一样,但是基本内容没怎么变,只是将权限功能分的更明确一些. (1)将修改密码,帮助,版本信息,退出系统提出来,作为单独的一个"系统"菜单. (2)将结账,日账单,周账单统一放到"结账"二级子菜单下. (3)将"学生上机状态"与"学生上机信

VB.NET版机房收费系统---导出Excel表格

datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,可以显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件非常简单和直观,大多数情况下,只需要设置DataSource属性即可,在绑定到包含多个列表或表的数据库源时,只需将DataMember属性设置为绑定的列表或表的字符串即可.机房收费系统多次用到数据表格的显示,并且导出为Excel表格,第一次机房收费系统是用VB版本的,她导出Excel的方法如下: 打开VB-工程-应用-勾选M

个人版机房收费系统总结

用了一个月的时间,重构完成了个人版的机房收费系统,不来个总结心里就有点儿不踏实. 首先说说一年前第一次敲机房收费系统的事儿,那是纯面向过程,能实现功能就可以.当初完成了这个系统,可谓是在提高班学习中的又一个里程碑,纯手工制作,精心打造.我们学会了分析业务流程,消化吸收VB和数据库的学习成果,提高对代码的亲和力,培养对编程的兴趣. 一年后的现在经历了第二次机房收费系统,深刻体会到了米老师编制培养计划的良苦用心,我们其实是在攀登一座高山,一步一个台阶.在第一次机房收费系统中暴露出来的问题得以解决和完

vb.net机房收费系统重构——总结(二)软件工程文档1

学软工时常常听到:这是我们迈向职业化的一步.软件工程文档在一个项目开发中必不可少,通过这次重构,将以前的软件工程,UML重新认识,梳理,实用了一遍有了更深刻的体会,我在机房重构中,一共编写了七个文档,分别是 1.项目开发计划 2.软件需求说明书 3.数据库设计说明书 4.概要设计说明书 5.详细设计说明书 6.机房收费系统测试计划 7.机房收费系统用户操作手册 在这里只讲一下项目开发文档中各种需要的图.表. (一)软件项目开发计划: 文档的目的不用说,在这里面最重要的两个内容:项目的人员分工,以