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

前一段时间,发了几篇关于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 3: Mail Label

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

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

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

  3. RDL(C) Report Design Step by Step

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

  4. Design POX controller step by step

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

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

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

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

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

  7. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  8. python写一个通讯录step by step V3.0

    python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...

  9. C#2.0实例程序STEP BY STEP--实例二:数据类型

    C#2.0实例程序STEP BY STEP--实例二:数据类型 与其他.NET语言一样,C#支持Common Type Sysem(CTS),其中的数据类型集合不仅包含我们熟悉的基本类型,例如int, ...

最新文章

  1. Ubuntu网络设置
  2. LeetCode 137. Single Number II--三次异或消除相同的数--C++,Python解法
  3. 好书速递 | FPGA原理和结构
  4. 中南林科大c语言程序设计,2017年中南林业科技大学计算机与信息工程学院802C语言与数据结构之C程序设计考研题库...
  5. PHP单选框实现的方法,jQuery简单实现遍历单选框的方法
  6. 【Flink】Flink checkpoint 本地磁盘 没有清除
  7. 小心!你的脸正在成为色情片主角
  8. JS - 移动设备终端的touch事件
  9. VC6 SDK 下载
  10. 南通市城管局推动“数字化城管”向“智慧城管”升级
  11. java中system.in怎么用
  12. ACM/IOI 国家队集训队论文集锦
  13. 计算机后台打印机程序,打印机不能正常工作,提示'操作无法完成,后台打印程序服务没有运行'的解决方法...
  14. 创业公司的融资阶段:天使轮、种子轮、A轮、C轮、E轮到底是什么意思?
  15. 3种思路,打造用户画像的标签体系
  16. 中国人民银行清算总中心CDA业务数据分析师培训正式开课
  17. 域名的解析及域名根服务器
  18. 《论文写作》课程心得
  19. 诺基亚 索爱 低端手机及智能手机 与 QQ邮箱或MyTT 通讯录同步 介绍
  20. MSRA前端实习面经

热门文章

  1. apache配置ssl证书
  2. c语言 谭浩强 一维数组内放10个学生成绩 全局变量写一个函数 最高分、最低分、平均分...
  3. 两个int()方法的区别
  4. 数据镜像备份工具rsync + inotify
  5. ListView控件的弧形设计
  6. TypeScript入门教程 之 生成器函数
  7. 容器编排技术 -- Kubernetes从零开始搭建自定义集群
  8. mysql左右连接举例_MYSQL 连接举例
  9. 简说设计模式——策略模式
  10. SpringMVC 解决中文乱码的过滤器