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

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

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

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

事实上可以达到这种效果须要做双方面的工作:加入报表控件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文件的雏形就出来了
这里我们不须要用到对每列的sum,所以右键表格的每一个行和最后一列不须要的行和列删除,仅仅留下须要的行和列(或者直接把这个表删除。右键插入新的表,然后依据自己的须要编辑),我设计好的表为:
第一行为列标题,第二行为数据关联行,即与数据库中数据的关联,鼠标放到第二行每一个单元格时,单元格右上角会出现一个小图标。点击则能够为该单元格以及该单元格所在的整列关联数据集中的数据。
以下就開始设计报表的一些细节,如标题、參数、时间等等:
加入文本框:加入标题 “机房收费系统结账单” 事实上就是在【工具箱】中加入文本框就能够。

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

加入内置字段:如上图。右下角的《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.UserIDDim 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空间,点击右上角的小三角。在“选择报表”后选择您刚制作的报表就大功告成了。到此,一张简单的报表就制作好了
假设步骤中有错误或不全面的地方。欢迎补充说明。

转载于:https://www.cnblogs.com/blfbuaa/p/6738592.html

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

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

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

  2. 机房收费系统之抽象工厂篇

    机房收费系统vb.net个人版已完成,在此过程中分层的好处在系统的完成过程中得到了很好的体会.第一遍用的是纯三层做的,这几天又在此基础上又重构了登录的demo,加上抽象工厂和配置文件的使用.下面以登录 ...

  3. 机房收费系统——需求分析

    前言 当我们在进行软件开发项目的时候,首先进行的步骤就是分析人员通过和用户的沟通交流,了解要开发的软件所要具有的功能,满足用户的需求. 正文 在开始敲机房收费系统之前,我们先要将ODBC数据源配置好, ...

  4. 机房收费系统———报表

    这篇文章主要介绍一下机房收费系统中,报表的使用和制作. 提到报表,相信对于我们这些程序菜鸟来说,挺陌生的.原来基本上没有接触过,对它的了解和认识还停留在一个非常肤浅的阶段.甚至,脑子里根本就没有关于它 ...

  5. 机房收费系统【VB版】——前期准备

    前言: 没有源码和参考的机房收费系统,很犯怵的开始,完全不懂如何下手,经过后来小伙伴的交流和巨人的博客. 准备: 1.安装机房收费系统程序 1.1添加ODBC数据源--添加文件DSN--附加数据库-- ...

  6. VB.net版机房收费系统——结账功能实现(调错与优化)

    调错部分 上一篇博客<VB.net版机房收费系统--结账功能实现(代码部分>说的是结账功能的实现,亮出了代码.是在为这篇博客做铺垫.尽管结账功能代码是借鉴的巨人的博客.可是自己比着葫芦画瓢 ...

  7. 机房收费系统-- MDI子窗体显示技巧(续vb.net版)

    在vb6.0版的机房收费系统中说道过这个问题,回顾请点击:http://blog.csdn.net/chenjinge7/article/details/8231546这次在vb.net版本中想再次利 ...

  8. 重构机房VB.NET机房收费系统个人重构版你都学会了什么(之一)

    每日一贴,今天的内容关键字为重构机房 在VB.NET机房收费系统个人重构版时你都学会了什么?在开始第二遍的机房收费系统个人重构时,我发明不知不觉竟接触了很多很多之前不晓得的货色,也学到了很多新知识.下 ...

  9. VB.net版机房收费系统——结账功能实现(代码部分)

    实现结账功能的时候,被选项卡控件整的有点郁闷,瞬间脑袋就凌乱了,听上去自己好像很可笑的样子--于是,便去爬巨人的肩膀了~ 看了欢哥的博客,发现她的结账博客是按照"索引"思想写的,在 ...

最新文章

  1. hibernate 一对多_java面试题之Hibernate
  2. Vue 踩坑日志 - 有关路由传参的坑
  3. Hibernate Reference Documentation
  4. Linux删除特殊字符文件
  5. java 反射 速度_Java 反射获取类方法速率和实现方式
  6. (30)FPGA面试技能提升篇(基尔霍夫定律)
  7. Mac下ndk交叉编译arm平台程序
  8. 小学生计算机基础知识课件,计算机基础知识课件(图表部份).ppt
  9. 可视化编辑json数据——json editor
  10. swift5函数和Collection
  11. 在线社交网络的影响力最大化算法
  12. 英语知识(与字面意思 相反的) Corner office
  13. i排版html居中,i排版-i排版官网:微信公众号文章编辑软件-禾坡网
  14. Rasa系列教程(二) -- Rasa NLU基础
  15. 验证sqlserver 2000 sp4补丁是否安装成功(安装补丁后可以远程访问)
  16. 电信计费综合管理系统
  17. java取模数_java如何用负数做模数计算?
  18. 到底如何保证线程安全,总结得太好了。。
  19. 出现无法访问的故障,ping出现请求超时time out,系目的主机网关造成问题排查过程
  20. BitXHub跨链交易的流程

热门文章

  1. ORB_SLAM2帧Frame
  2. abb机器人指令手册_ABB机器人可以告别示教器啦
  3. linux终端中运行网银盾,Linux下使用Virtualbox安装 Windows 7 操作网银攻略
  4. e.V4p.C0/index.php,php-fpm进程在Kubernetes中接收SIGKILL信号
  5. 机械键盘连击怎么处理_怎么选择机械键盘?各种平价机械键盘推荐
  6. flowlayout java_【简答题】通过使用flowlayout设计出来 java程序如下图所示
  7. python-docx表格设置实线_python docx加入表格 在表格中加图,设置框线
  8. python语音翻译软件下载_python软件翻译
  9. php父类的静态变量,抽象父类中的PHP静态变量:问题是在示例代码中!
  10. 和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓