之前做机房收费系统用的报表是Grid++Report,这次VB.NET重构中用到了VisualStudio自带的报表控件。

刚開始当然对这块功能非常不熟悉,只是探究了一段时间后还是把它做出来了。

以下把在VisualStudio(我用的是VisualStudio2013,假设与您使用的版本号不同,过程中如有不符还请考虑实际情况)中制作报表的过程尽可能具体地记录下来,供刚開始学习的人学习參考。

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHV5dXlhbmc2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

事实上可以达到这种效果须要做双方面的工作:加入报表控件ReportViewer和加入编辑RDLC文件。

个人感觉RDLC文件的作用是绑定数据库中须要的数据,ReportViewer则是引用RDLC文件来显示RDLC文件从数据库中绑定的数据。

1、加入报表控件ReportViewer:

加入报表控件非常easy:工具箱—报表—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文件的雏形就出来了:
        

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHV5dXlhbmc2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">


        这里我们不须要用到对每列的sum,所以右键表格的每一个行和最后一列不须要的行和列删除,仅仅留下须要的行和列(或者直接把这个表删除。右键插入新的表,然后依据自己的须要编辑),我设计好的表为:
        
       第一行为列标题,第二行为数据关联行,即与数据库中数据的关联,鼠标放到第二行每一个单元格时,单元格右上角会出现一个小图标。点击则能够为该单元格以及该单元格所在的整列关联数据集中的数据。
      以下就開始设计报表的一些细节,如标题、參数、时间等等:
         

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHV5dXlhbmc2Njg4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">


       加入文本框:加入标题 “机房收费系统结账单” 事实上就是在【工具箱】中加入文本框就能够。

其它文本如“開始时间:”、“结束时间:”等也是一样;

       加入内置字段:如上图。右下角的《Exp》就是报表中自带的函数。能够在【报表数据】的内置字段中加入,比方我在右下角的这个Exp就是要显示运行报表的时间,时间格式能够自己设定,右键《Exp》—表达式。在“为下面项设置表达式”下输入表达式就可以,如我想让它显示的时间格式为“2014-08-08
08:08:08”,则可输入“ =Format(Now,"yyyy-MM-dd hh:mm:ss") ”。
         加入參数:另外前面带有@的表达式,就是您的程序中将要传入报表中的參数,比方我想在报表左下角显示制作这个报表的操作员,而这个操作员的username仅仅能从程序中获取。上面的開始日期@startTime和截止日期@endTime也是须要从代码中传入。这类參数能够右击【报表数据】的“參数”,来加入參数。
     (注:假设您没有找到【工具箱】或【报表数据】那么就须要去【视图】中加入。)
 
     
 
     以下就到了最后阶段。加上代码,核心代码为(限于篇幅。在这仅仅贴上刷新button事件代码):
'在本代码层首先要加入下面引用
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空间,点击右上角的小三角。在“选择报表”后选择您刚制作的报表就大功告成了。到此,一张简单的报表就制作好了
        
       假设步骤中有错误或不全面的地方。欢迎补充说明。


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

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

    从机房重构到如今,我最大的感受就是万事开头难,万事结尾难!开头难是由于那个思路理不清,对三层已经设计模式的应用不够熟悉,结尾难就是打包部署了!这几天非常头疼,以为完毕了代码就大功告成了,但是没想到啊, ...

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

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangdan199112/article/details/28286365             ...

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

    datagridview,翻译成中文的意思是数据表格显示,使用DataGridView控件,能够显示和编辑来自不同类型的数据源的表格,将数据绑定到DataGridView控件很easy和直观,大多数情 ...

  4. VB.NET版机房收费系统---七仙女之系统登录

    VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...

  5. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

  6. 机房收费系统之vb报表的模板的制作(一)

           机房收费系统有报表的功能,报表对于我们来说有点陌生.这不是会计的事吗?怎么机房收费系统也參合进来了,事实上我们学会了报表的步骤.理解了代码后.报表变得不是非常难,世上无难事,仅仅怕肯登攀 ...

  7. VB.NET 机房收费系统项目总结

    VB.NET机房收费系统项目总结 从2013年5月3日——2013年8月20日历时三个多月的.NET机房收费系统终于完成了.项目做完了,真有一种如释重负的感觉. 下面我将从文档.UML图,代码这三个方 ...

  8. VB.NET版机房收费系统---外观层如何写

    外观设计模式,<大话设计模式>第103页详细讲解,不记得这块知识的小伙伴可以翻阅翻阅,看过设计模式,敲过书上的例子,只是学习的第一步,接着,如果在我们的项目中灵活应用,把设计模式用出花儿来 ...

  9. VB.NET版机房收费系统---报表

    报表,即报告情况的表格,简单的说:报表就是用表格.图表等格式来动态显示数据,可以用公式表示为:"报表 = 多样的格式 + 动态的数据". 在没有计算机以前,人们利用纸和笔来记录数据 ...

随机推荐

  1. 03-hibernate注解-关系映射级别注解-一对一

    实体之间的映射关系 一对一:一个公民对应一个身份证号码 一对多(多对一):一个人可以有多个银行账号 多对多:一个学生有多个老师,一个老师有多个学生. 一对一单向外键关联 @OneToOne(casca ...

  2. JDBC:数据库操作:BLOB数据处理

    CLOB主要保存海量文字,而BLOB是专门保存二进制数据:包括,图片,音乐,影片.等. 在MYSQL中,BLOB类型使用LONGBLOB声明,最高可存储4G内容. 创建一个表: create tabl ...

  3. Com与.Net互操作

    Com与.Net互操作 .Net调用Com组件主要分为两类:静态调用及动态调用.所谓静态调用:指通过tlbimp.exe命名产生Com组件在.Net环境下的包装类,然后通过这个包装类来访问Com组件. ...

  4. Redis Key过期通知

    概述 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件.如Redis数据库中键的过期事件也是通过订阅功能实现.本文主要基于Azure PaaS Red ...

  5. SQL&EF优化第一篇 各种情况下的性能测试之count函数篇

    测试环境  mssql 08  +win7    数据 30W条 二〇一六年十月二十九日 09:04:43 结论:1>主键> *>可空列    推测未论证: 根据情况优先选择 顺便提 ...

  6. ExtJS学习------Ext.define的继承extend,用javascript实现相似Ext的继承

    (1)Ext.define的继承extend 详细实例: Ext.onReady(function(){ //Sup Class 父类 Ext.define('Person',{ config:{ n ...

  7. Hadoop 集群搭建 mark

    Hadoop 集群搭建 原创 2016-09-24 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 目标 在3台服务器上搭建 Hadoop2.7.3 ...

  8. requests.exceptions.MissingSchema: Invalid URL 'xxxxxxxxxxxxx': No schema supplied. Perhaps you meant xxxxxxxxxxxxx

    import requests session = requests.session() carProposalUrl = "www.caaaa.com.cn/aaaa/aaaaa/carP ...

  9. PHP扩展开发及内核应用(未完)

    转: https://github.com/walu/phpbook

  10. 点滴积累【C#】---操作xml,将xml数据显示到treeview

    效果: 代码: XmlDocument xml = new XmlDocument(); private void Form1_Load(object sender, EventArgs e) { C ...