前一段时间,发了几篇关于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. 拼多多面试|如何用 Redis 统计独立用户访问量?
  2. 【100题】第十六题(层序打印树的节点)
  3. r语言绘制精美pcoa图_如何绘制精美的PCoA图形?
  4. Android Activity 生命周期和LaunchMode 规则
  5. 国际分析师郭明錤:网络营销外包之下苹果头戴装置主要供应商被曝光!
  6. golang中的Mock依赖
  7. 中国计算机学会YOCSEF TDS《专题探索班》,新一代人工智能的基础与前瞻
  8. linux安装卸载mysql,Linux6 系列 安装、卸载mysql
  9. 第53课 化功大法 《小学生C++趣味编程》
  10. [转载]与索引相关的概念---聚簇因子
  11. Android之TextView练习
  12. Hibernate的CRUD
  13. 高分辨率:遥感卫星影像
  14. 大年三十问候导师的后果...
  15. Nature:肠道内微生物合作方式的探究
  16. android学习笔记----多线程断点续传下载原理设计
  17. 幂指函数的极限运算法则
  18. 【FCPX插件】56种标题文本输入逐字出现字幕打字机动画效果 Typing Titles,支持M1芯片!
  19. Ubuntu下 vim安装失败的解决方法 以及安装vim
  20. python提取Excel某几列数据

热门文章

  1. [数据可视化]使用matplotlib对CSV文件数据进行绘图
  2. 编程方式加载css文件夹,如何以编程方式(或使用工具)将.MHT mhtml文件转换为常规的HTML和CSS文件?...
  3. NFA和DFA的区别
  4. Pandas之iloc、loc
  5. chgrp、chmod和chown命令-改变文件的权限和属性
  6. java五子棋课程设计_JAVA课程设计+五子棋游戏
  7. Python入门习题大全——个性化消息
  8. 自定义hamcrest的Matcher
  9. web前端全栈0基础到精通(祺)07
  10. Codeigniter 4基础教程(2)-- 版本差异,模板,一个form例子