(转 蜡人张)RDL(C) Report Design Step by Step 1: DrillThrough Report
这篇随笔主要描述实现钻取报表的步骤。
钻取报表的数据源应该是两个具有主子关系的表,在这篇随笔中以Northwind数据库中的订单和订单明细作为数据源。
1、在Visual Studio 2005中创建一个Windows应用程序RDLCDR。
2、在项目中添加数据源,数据源并不一定用来为报表提供数据(当然Visual Studio 2005提供的操作非常方便),主要是在报表设计时可以方便向报表中进行字段拖曳。添加数据源意味着在项目中添加了一个数据集Orders.xsd文件,当报表的数据不是来源于关系型数据库(如Flat Files或Web Services等)时,我们可以自己定义一个xsd文件作为报表设计时的数据源,而在程序中重新为报表载入数据。
3、在项目中添加报表rptOrder.rdlc,这个报表非常简单,不具体介绍其设计步骤。报表文件中将显示“订单”的内容,其结构如下图1所示:
图1 “订单”报表的结构
4、同上,添加报表rptOrderDetails.rdlc,其结构如下图2所示:
图2 “订单明细”报表的结构
5、在报表rptOrder.rdlc中,选中表控件的“表详细信息”行的第一列“=Fields!订单ID.Value”单元格,右键“属性”弹出“文本框属性”对话框(如图3所示),在“导航”选项卡的“超链接操作”中,选中“跳至报表”并在下拉列表中选择报表rptOrderDetails,单击下拉列表右边的“参数...”按钮,进行入图4所示的设置。
图3 “文本框属性”对话框
图4 “跳至报表”参数设置
6、在报表rptOrderDetails中,使用菜单“报表” →“报表参数”进入“报表参数”对话框,并如下图5所示设置参数orderid,这个参数主要用于从rptOrder接收传值。
图5 报表参数orderid设置(点击小图看大图)
7、选中报表rptOrderDetail中的表格控件,右键“属性”,进入“表属性”对话框,在“筛选器”选项卡中,设置如下图6所示的筛选器。在构造筛选器时,最好使用“编辑表达式”对话框生成表达式,除非足够熟悉,否则,手写表达式很可能会出现错误,例如表达式前面一定要有“=”。
图6 筛选器设置
OK,至此,报表设计需要做的内容就完成了,下面是如何为报表提供数据,并显示在ReportViewer中了。
8、在WinForm窗体上放置ReportViewer控件,并单击控件右上角的三角符号,弹出“ReportViewer 任务”对话框中(图7),选择报表RDLCDR.rptOrder.rdlc。如果前面提到的数据集文件(.xsd文件)是由系统自动生成的话,系统会自动为窗体生成DataAdapter、BindingSource和DataSet,删除之,我们在下面的步骤中手动指定报表的数据源,否则可能会出现报表不报错,但报表内无数据的情况。
图7 ReportViewer任务对话框
9、在窗体中使用下图8所示的代码为报表和钻取报表指定数据源,完成最后的操作。需要注意的是下图8中的“数据集名称”必须指定正确,而这个名称可以从下图9所示的对话框中取得。
图8 指定数据源的代码(点击小图看大图)
图9 “数据集名称”的出处
结果截图如下:
图10 “订单”报表
图11 “订单明细”钻取报表
Demo下载
另外,在Web应用程序中,也可以使用此方法建立DrillThrough报表,不过代码中的Microsoft.Reporting.WinForms.ReportDataSource要改为Microsoft.Reporting.WebForms.ReportDataSource。
(转 蜡人张)RDL(C) Report Design Step by Step 1: DrillThrough Report相关推荐
- RDL(C) Report Design Step by Step
RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...
- RDL(C) Report Design Step by Step 3: Mail Label
RDL(C) Report Design Step by Step 3: Mail Label Crystal Report在报表向导中提供了三种向导类型给用户进行选择--Standard.Cross ...
- RDL(C) Report Design Step by Step 2: SubReport
RDL(C) Report Design Step by Step 2: SubReport 前两天,有网友在Blog上评论要求将子报表的配置贴出来,由于这两天有些别的事情,所以耽搁了:另外,自己也比 ...
- RDL(C) Report Design Step by Step 1: DrillThrough Report
RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...
- Design POX controller step by step
Design POX controller step by step In this article, I'll describe how to understand the POX controll ...
- 数据库设计Step by Step (10)——范式化
引言:前文(数据库设计Step by Step (9)--ER-to-SQL转化)讨论了如何把ER图转化为关系表结构.本文将介绍数据库范式并讨论如何范式化候选表.我们先来看一下此刻处在数据库生命周期中 ...
- 数据库设计Step by Step (9)——ER-to-SQL转化
2019独角兽企业重金招聘Python工程师标准>>> 引言:前文(数据库设计 Step by Step (8)--视图集成)讨论了如何把局部ER图集成为全局ER图.有了全局ER图后 ...
- ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...
增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块.这句话笼统点说便是"封装"或"抽象" ...
- Command 模式 Step by Step
Command 模式 Step by step 引言 提起Command模式,我想没有什么比遥控器的例子更能说明问题了,本文将通过它来一步步实现GOF的Command模式. 我们先看下这个遥控器程序的 ...
- 魔趣刷机step by step with zuk z2 pro
关键字 卡刷, 解锁bootloader, 无需root, 魔趣, Android原生, Google Gapps全家桶, recovery刷机 前提 会使用基本的Linux命令, 工作环境中有adb ...
最新文章
- 「留光」1小时:中科大让我们离「量子U盘」又近了一步
- webserver获取http请求方的服务器ip_光大科技基础设施团队剖析HTTP协议
- 【Java】SpringBoot入门学习及基本使用
- linux ndk编译静态库,Android开发教程:NDK编译静态库失败
- 解决pip异常:No module named ‘pip‘
- 我和阿里巴巴的孽缘(三)
- Windows下MySQL数据库名及表名无法大写的问题
- nginx屏蔽服务器类型信息,简单的禁止CURL 访问服务器nginx
- docker公共存储库_Docker入门(2)——镜像结构和私有镜像库
- Qt C/C++统计运行时间
- welcome-file-list标签的控制作用以及在springmvc中此标签的的配置方式
- 锂电池接线方法图_锂电池制浆工艺(2)——制浆设备种类及特征
- mybatis逆向工程生成java代码和xml配置
- oracle函数,查询,事务
- 作为一名优秀的软件测试工程师,需要具备哪些能力?
- 使用js获取input file的路径C:\fakepath\问题
- 小米5S_2015711_官方线刷包_救砖包_解账户锁
- [ROC-RK3568-PC] [Firefly-Android] 10min带你了解ADC的使用
- 投机者怎么在市场中使用底部放量进行程序化交易
- 你曾后悔进入 IT 行业吗?为什么?(转自知乎)--一生不悔入IT