机房重构之 .net自带报表

在学习vb6时,使用的报表是第三方的Grid++Report,纠结了一番,现在换到了VB.Net,有花了一天的时间来捣鼓。不过感觉还是很有收获,拿出来分享一下。

第一阶段【添加数据集】

首先在微软官网下载了报表并安装之。打开VS2010,在项目中添加“新建项”,在“已安装的模版中”选择“Reporting”—》“报表”,在最下方键入名称。

打开“工具箱”,可以按照自己的需求,或拽和编辑各种控件。也可以在“报表数据”为报表添加“内置字段”和“参数”。打开“报表数据”的操作:“视图”—》最后一项“报表数据”,或者按“Ctrl + Alt + D ”。 既然是报表,当然离不开数据了。我这里选择用数据库作为数据源。在报表数据工具栏中,点击“新建”—》“数据集”

会弹出一个新建数据集的界面:

这里选择“数据库”,下一步,“数据集”,点击“新建连接”,选择好服务器名、密码和数据库。测试一下:成功后,确定。

                        

选择你所需要的表、视图、函数或存储过程。

确定后,返回到这个界面,你可以更改数据集的名称(编程时绑定的数据集名称要与报表中数据集的名称一致)、选择具体的表、视图等。然后确定。

这样在“报表数据”栏中就可以看到新建的数据集了。

第二阶段【设计报表】

介绍一些设计报表的工具箱,在VS2010 IDE左侧“工具箱”中的报表项,文本框用于可以显示文字、传递参数。表和矩阵则可以用来存放数据。不同的是表是针对于“列数固定、行数可变的数据”设计的,而矩形则是针对于“列数与行数均可变”的聚合数据设计的。 一般数据库中的表字段都为英文,但是显示的时候,都用中文,为了保证数据隐秘,也应该用中文。说说表中的实现,对于行标题,直接修改即可,而数据行可以修改,也可以不修改。数据行由字段占位符构成,可以右击编辑占位符的属性来实现显示中文。在查询报表时,占位符会被真实数据所代替。,也可以编辑表达式,用
!符号来做找到字段属性。矩阵跟列表框差不多。

      

       

矩形可以作为其他报表项的容器,列表则是用于显示每一个组或数据行重复的数据项。列表框可以通过编辑矩形属性,在可见性中绑定报表中的数据项。图像则是用于显示图片的,可以手动导图。

对于需要汇总比较数据的用户来说,图表则是你的不二选择。在右侧添加要比较的字段,顶部则添加汇总的项,底部则添加类别字段。仪表则用线性或径性方式来显示数据、字段、表达式等,我们可以针对仪表、仪表刻度、仪表指针、仪表范围的进行数据绑定。

         

以上各个控件,都可以通过其属性编辑背景色、字体大小等。属性中也有各自的特点,期待着你自己去发现。

添加参数:在报表数据中的参数选项上,右击选择添加参数。然后改名,并针对传递的参数设置数据类型。我这里需要是时间类型。(编程传参时的参数类型必须与这里选择的数据类型相对应,如果不对应,会出现“本地报表处理错误”的问题。)也可以对参数设置默认值,或者为空。具体一看就明白了。将参数拖入到报表中显示会在参数名前自动添加
@ 符号,来表示参数.而内置字段则用 & 符号表示。

              

第三阶段【编程部分】

下面是我做的报表模版及运行结果界面:

首先,在项目中新建一个windows窗体,将ReportViewer拖放到窗体上,调整合适的大小与位置。

首先在窗体代码页最上面引入2个命名空间

[vb] view
plain
copy

  1. Imports System
  2. Imports Microsoft.Reporting.WinForms

双击查询,打开Click事件:

[vb] view
plain
copy

  1. Private Sub btnQuery_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuery.Click
  2. Dim dt As DataTable
  3. Dim b_CheckDay As New B_CheckDayLog
  4. ‘大家可以自己的实际情况查询数据。我这里用了分层,查询的具体实现不在这层。
  5. If chkEnd.Checked Then
  6. If chkUser.Checked Then
  7. ‘获取记录
  8. dt = b_CheckDay.QueryCheckLog(cmbUserID.Text, dtpStart.Text, dtpEnd.Text)
  9. Else
  10. ‘获取记录
  11. dt = b_CheckDay.QueryCheckLog(dtpStart.Text, dtpEnd.Text)
  12. End If
  13. Else
  14. ‘获取记录
  15. dt = b_CheckDay.QueryCheckLog(dtpStart.Text)
  16. End If
  17. ‘【这里是重点】
  18. ‘声明一个报表数据源对象
  19. Dim rptDataSource As New ReportDataSource
  20. ‘设置报表数据源名称
  21. rptDataSource.Name = "Check"
  22. ‘设置报表数据源实例
  23. rptDataSource.Value = dt
  24. ‘设置嵌入报表的资源的名称
  25. ReportViewer1.LocalReport.ReportEmbeddedResource = "UI.CheckDay.rdlc"
  26. ‘清空报表数据源
  27. ReportViewer1.LocalReport.DataSources.Clear()
  28. ‘添加报表数据源
  29. ReportViewer1.LocalReport.DataSources.Add(rptDataSource)
  30. ‘设置报表中的参数集合,这里传递的参数,名字大小写必须一致,
  31. ‘且其本身数据类型必须与报表中定义的数据类型也必须一致。
  32. Dim params() As ReportParameter =
  33. {
  34. New ReportParameter("DateStart", Date.Parse(dtpStart.Text)),
  35. New ReportParameter("DateEnd", Date.Parse(dtpEnd.Text))
  36. }
  37. ‘传递报表中的参数集合
  38. ReportViewer1.LocalReport.SetParameters(params)
  39. ‘刷新报表
  40. Me.ReportViewer1.RefreshReport()
  41. End Sub

现在一切OK了,运行部分就交给你自己测试了。我也算初识报表吧,如果有什么错误的地方,欢迎大家指正,大家共同探讨,共同进步。

转载于崔成龙师哥:http://blog.csdn.net/xiaoxian8023/article/details/7106588

时间: 2024-10-28 21:06:11

机房重构之 .net自带报表的相关文章

VS2010 报表教程--玩转机房重构

        机房重构的时候再遇报表,和第一次做的时候不同点是用的VS 中自带的报表,而且用VS中自带的报表控件不仅简单操作,而且方便.只需要三个步骤就可以将它搞定. 1.添加数据集 2.添加表 3.添加报表的控件 Why?         添加数据集的目的是为了和SqlServer连接,要想使用数据库中的表,就要将和数据库进行连接,使用SQL语句选择相应的表.         添加表的目的是为了添加数据集和数据源         添加报表控件的目的是为了将数据显示到该控件上 How? 一.添

C#机房重构——报表制作

前言 和VB需要引用其他报表软件不同,VS自带报表设计的功能,初次尝试,就感受到了它的强大之处. 报表制作 话不多说,直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗体上. 2.然后,添加一个报表. 3.报表添加完成后,我们会看到报表的相关数据. 4.依次添加好数据源和数据集,测试连接成功. 5.成功后如图所示.添加要使用的参数. 6.然后我们就可以在报表工具箱里添加自己所需要的东西,如,表,文本框等.这里的表可以直接引用数据集中内容.点击表里的那个小图标即可.

【C#】报表制作<机房重构>

前言 和VB须要引用其它报表软件不同,VS自带报表设计的功能,初次尝试.就感受到了它的强大之处. 报表制作 话不多说.直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗口上. 2.然后,加入一个报表. 3.报表加入完毕后,我们会看到报表的相关数据. 4.依次加入好数据源和数据集,測试连接成功. 5.成功后如图所看到的. 加入要使用的參数. 6.然后我们就能够在报表工具箱里加入自己所须要的东西.如,表.文本框等.这里的表能够直接引用数据集中内容.点击表里的那个小图标就

机房重构---我们“重构”出了什么?

机房重构立即就要结束了,在这"第三个"系统结束的时候,有必要思考一下我们重构的目的了. 或许有人说,还有什么目的呀,不就是编程语言换成了.Net,做出来,调完bug,能执行就得了呗.这么浮夸的日子里,还叫什么劲啊? 对于有这样的想法的人,我必须道一声:您(白)辛苦了 ! 不管做什么事,没有一点总结性思考是无法进步的. 我以下的一些重构论述或者说反思性总结也存在很多不足,希望大家多多指正,在此先致谢! 本文将从五个方面论述一下这次的重构系统,各自是系统架构.UML图指导.设计模式应用.数

个人机房重构之SqlHelper

在接触SqlHelper之前已经是久闻大名了.机房的重构师傅说先用三层的思想来做,等体会深了在加设计模式和其他的.前天搬着电脑让师傅看了看,指导了指导,然后说可以加一些东西了.我说加这个加那个?师傅说想加什么想用什么回去自己再学学具体的会体会深刻. 其实在写纯三层的时候已经感受到了D层中代码的大量重复.连接数据库查询数据库写SQL语句总是用到那么几句话. 机房收费中关于数据库的操作无非这四种情况: 1.不带参数的增删改操作,返回结果为值 2.带参数的增删改操作,返回结果为值 3.不带参数的查询操

VS2013自带报表+打印功能

经过了VB版机房收费系统的学习,相信现在说起报表,我们已经不再觉得陌生.VB打印报表的功能是通过引用第三方控件来实现的,而相对的VS就在VB的基础上完善了这一功能,VS自带报表控件和打印功能,这样就给我们这些编程者带来了很大的方便.下面就将我做程序的一些小经历来跟大家一起分享一下. 1,我们右击U层所在文件夹添加"新建项". 2,在弹出的的添加新建项窗口中找到"reporting",在右面的内容窗口中选中"报表"选项,设置报表的名称. 3,点击确

机房重构小结(三层)

用了两个月纯三层的<机房重构>算是完成了,期间SQL软件各种不配合导致的各种修复从而获得了一大把"美好"经验,最后在卸装几次后还是无可避免的重装了系统,这两个月中用在SQL上的时间一个星期有过之而无不及.回头看看GrindStone中单对机房重构的记录才50来个小时,瞬间有种被SQL伤到的感觉,别人都在做系统我在--被玩电脑.所以现在抱着一种壮士将死的大义凛然先让机房收费早点升天吧. 对于机房收费系统的重构,主要分四为个方面:业务逻辑.数据库.分层.控件. 业务逻辑 这里的

[机房重构]UML图(包图、类图、用例图、时序图)

机房重构画图是一个非常重要的一个阶段,机房重构之前也画过UML的图,但是这一次与上一次不同,这一次有分层的思想在里面. 包图 之前三层的时候各层之间的传递很清晰,包图也很容易就画出来了,先来看之前三层的包图.通过实体将输入的信息从U层传入B层,同时通过实体将信息从D层传入B层,B层进行判断,通过实体将结果返回给U层. 之前的三层不能很好的实现低耦和的思想,并且我们学习了设计模式,要继续进行分层,进行七层的编写.之前不太理解,看大家的博客,知道在U层和B层之间加入了外观模式,降低U层和B层之间的耦

机房重构-完结篇

机房重构已经结束了,自从软考开始,光顾着准备软考和三级网络等级考试就没来得急总结.软考一开始,突然觉得时间好少,时间过得好快.这节奏,有点飕飕的. ---------------------技术总结: 熟悉了对Visual Studio这一开发环境的使用,深入了解了VB.net语言基础有了一定的认识并且学会使用.这一次使用三层架构,利用分分层的思想,深入理解了各层的职责.代码规范,这一次再敲代码的时候先学了一下代码规范,也把头文件注释设计好,让自己的代码漂亮一点. 最终的要思想还是面向对象,根据