前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容,于是不少网友和我联系,问了一些关于报表设计方面的问题,最近准备写几篇关于RDLC报表设计的随笔。

这篇随笔主要描述实现钻取报表的步骤。

钻取报表的数据源应该是两个具有主子关系的表,在这篇随笔中以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相关推荐

  1. RDL(C) Report Design Step by Step

    RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...

  2. RDL(C) Report Design Step by Step 3: Mail Label

    RDL(C) Report Design Step by Step 3: Mail Label Crystal Report在报表向导中提供了三种向导类型给用户进行选择--Standard.Cross ...

  3. RDL(C) Report Design Step by Step 2: SubReport

    RDL(C) Report Design Step by Step 2: SubReport 前两天,有网友在Blog上评论要求将子报表的配置贴出来,由于这两天有些别的事情,所以耽搁了:另外,自己也比 ...

  4. RDL(C) Report Design Step by Step 1: DrillThrough Report

    RDL(C) Report Design Step by Step 1: DrillThrough Report 前一段时间,发了几篇关于RDLC报表的随笔,由于这些随笔中没有关于报表设计方面的内容, ...

  5. Design POX controller step by step

    Design POX controller step by step In this article, I'll describe how to understand the POX controll ...

  6. 数据库设计Step by Step (10)——范式化

    引言:前文(数据库设计Step by Step (9)--ER-to-SQL转化)讨论了如何把ER图转化为关系表结构.本文将介绍数据库范式并讨论如何范式化候选表.我们先来看一下此刻处在数据库生命周期中 ...

  7. 数据库设计Step by Step (9)——ER-to-SQL转化

    2019独角兽企业重金招聘Python工程师标准>>> 引言:前文(数据库设计 Step by Step (8)--视图集成)讨论了如何把局部ER图集成为全局ER图.有了全局ER图后 ...

  8. ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...

    增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块.这句话笼统点说便是"封装"或"抽象" ...

  9. Command 模式 Step by Step

    Command 模式 Step by step 引言 提起Command模式,我想没有什么比遥控器的例子更能说明问题了,本文将通过它来一步步实现GOF的Command模式. 我们先看下这个遥控器程序的 ...

  10. 魔趣刷机step by step with zuk z2 pro

    关键字 卡刷, 解锁bootloader, 无需root, 魔趣, Android原生, Google Gapps全家桶, recovery刷机 前提 会使用基本的Linux命令, 工作环境中有adb ...

最新文章

  1. 「留光」1小时:中科大让我们离「量子U盘」又近了一步
  2. webserver获取http请求方的服务器ip_光大科技基础设施团队剖析HTTP协议
  3. 【Java】SpringBoot入门学习及基本使用
  4. linux ndk编译静态库,Android开发教程:NDK编译静态库失败
  5. 解决pip异常:No module named ‘pip‘
  6. 我和阿里巴巴的孽缘(三)
  7. Windows下MySQL数据库名及表名无法大写的问题
  8. nginx屏蔽服务器类型信息,简单的禁止CURL 访问服务器nginx
  9. docker公共存储库_Docker入门(2)——镜像结构和私有镜像库
  10. Qt C/C++统计运行时间
  11. welcome-file-list标签的控制作用以及在springmvc中此标签的的配置方式
  12. 锂电池接线方法图_锂电池制浆工艺(2)——制浆设备种类及特征
  13. mybatis逆向工程生成java代码和xml配置
  14. oracle函数,查询,事务
  15. 作为一名优秀的软件测试工程师,需要具备哪些能力?
  16. 使用js获取input file的路径C:\fakepath\问题
  17. 小米5S_2015711_官方线刷包_救砖包_解账户锁
  18. [ROC-RK3568-PC] [Firefly-Android] 10min带你了解ADC的使用
  19. 投机者怎么在市场中使用底部放量进行程序化交易
  20. 你曾后悔进入 IT 行业吗?为什么?(转自知乎)--一生不悔入IT

热门文章

  1. Pqmagic的使用方法
  2. uniApp美化原生Video界面
  3. 给宽带加速,一分钟学会,释放电脑保留的20%宽带资源
  4. [网络安全学习篇9]:渗透测试(千峰网络安全视频笔记 9 day)
  5. 移远 4G EC20 高通 9X07 工业级 车规级 CAT4 CAT6
  6. 封装iOS原生UI 控件给RN调用
  7. 什么是主密钥、工作密钥、会话密钥、PIN密钥?
  8. 品优购项目代码学习第三天
  9. Namespace Write Protection
  10. 3D引擎龙头Unity:元宇宙和AI活跃玩家