(转 蜡人张)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 ...
最新文章
- 拼多多面试|如何用 Redis 统计独立用户访问量?
- 【100题】第十六题(层序打印树的节点)
- r语言绘制精美pcoa图_如何绘制精美的PCoA图形?
- Android Activity 生命周期和LaunchMode 规则
- 国际分析师郭明錤:网络营销外包之下苹果头戴装置主要供应商被曝光!
- golang中的Mock依赖
- 中国计算机学会YOCSEF TDS《专题探索班》,新一代人工智能的基础与前瞻
- linux安装卸载mysql,Linux6 系列 安装、卸载mysql
- 第53课 化功大法 《小学生C++趣味编程》
- [转载]与索引相关的概念---聚簇因子
- Android之TextView练习
- Hibernate的CRUD
- 高分辨率:遥感卫星影像
- 大年三十问候导师的后果...
- Nature:肠道内微生物合作方式的探究
- android学习笔记----多线程断点续传下载原理设计
- 幂指函数的极限运算法则
- 【FCPX插件】56种标题文本输入逐字出现字幕打字机动画效果 Typing Titles,支持M1芯片!
- Ubuntu下 vim安装失败的解决方法 以及安装vim
- python提取Excel某几列数据
热门文章
- [数据可视化]使用matplotlib对CSV文件数据进行绘图
- 编程方式加载css文件夹,如何以编程方式(或使用工具)将.MHT mhtml文件转换为常规的HTML和CSS文件?...
- NFA和DFA的区别
- Pandas之iloc、loc
- chgrp、chmod和chown命令-改变文件的权限和属性
- java五子棋课程设计_JAVA课程设计+五子棋游戏
- Python入门习题大全——个性化消息
- 自定义hamcrest的Matcher
- web前端全栈0基础到精通(祺)07
- Codeigniter 4基础教程(2)-- 版本差异,模板,一个form例子