创建RDLC子报表

一、创建步骤?

1、建立主报表?

2、建立子报表?,添加参数,用于接受主报表关联字段的值。

3、在主报表中插入"子报表"控件,设置子报表的"常规"和"参数"属性。"常规"属性用于设定子报表的名称,"参数"属性用于将子报表与主报表通过子报表的参数、主报表的关联字段将二者关联起来。?

4、在后台代码中为主报表指定ReportDataSource?

5、在后台代码中注册(也称为订阅)子报表事件?

6、在子报表事件中为子报表指定ReportDataSource?

二、创建示例?

1、建立主报表??

2、建立子报表?,并添加参数ygbm

3、在主报表中插入"子报表"控件,设置子报表的"常规"和"参数"属性。

3.1插入子报表?

3.2设置子报表属性-常规?

3.3设置子报表属性-参数??,名称为子报表中定义的参数名称,值为主报表关联子报表的字段

4、在后台代码中为主报表指定ReportDataSource??

protected void Button1_Click(object sender, EventArgs e)

{

string ygbm = TextBox1.Text ;

DataAccess myda = new DataAccess();

string selStr = "select ygbm,ygxm,(SELECT CASE WHEN ygxb = ‘1‘ THEN ‘男‘ ELSE ‘女‘ END) as ygxb,";

selStr+="ygmz,sfid,zzmm,ygsr,gzsj,byxx,xlmc,zcmc,jnmc,zwmc,lxdh,gzgw,memo from vw_ygb where ygbm=" + ygbm;

DataSet ds = myda.GetDataSet(selStr);

ReportDataSource rds = new ReportDataSource("DataSet1", ds.Tables[0]);

ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);

ReportViewer1.Visible = true;

ReportViewer1.LocalReport.DataSources.Clear();

ReportViewer1.LocalReport.DataSources.Add(rds);

ReportViewer1.LocalReport.Refresh();

}

5、在后台代码中注册(也称为订阅)子报表事件??

ReportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);

6、在子报表事件中为子报表指定ReportDataSource??

void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)

{

int ygbm = int.Parse(e.Parameters["ygbm"].Values[0]);

DataAccess myda = new DataAccess();

string selStr = "select * from vw_zyb where ygbm="+ygbm;

DataSet ds = myda.GetDataSet(selStr);

ReportDataSource rds = new ReportDataSource("DataSet1", ds.Tables[0]);

e.DataSources.Add(rds);

}?

7、运行结果如下?

时间: 2024-10-10 23:46:42

创建RDLC子报表的相关文章

关于RDLC子报表添加参数 错误“本地报表处理期间出错 。值不能为空。 参数名:value” 错误解决方法

由于对RDLC报表不够熟悉,在出现这个错误时,也是找了一阵才找到解决方案1.首先在网上找了一堆方法后  这句话提醒了我  自定义的名称必须和子报表参数同名 2.然后我仔细比对了一下我的报表和子报表 下图为父报表的子报表参数(此处没有问题) 3.然后我在回到子报表  检查子报表中是否有同名的参数和数据集,并设置参数可为空 (注意: 查询的SQL 必须也要有这个字段) 4. 最后一点很重要,属性, 在筛选器中填写表达式  注意 表达式和值不一样 这样基本就OK了!

RDLC系列之二 子报表

本文实现简单的子报表 一.效果图 二.步骤 1.项目下新添加报表SubReport.rdlc,在主报表中添加子报表:右键=>插入=>子报表 2.(可选)传参给子报表 a.在主报表的子报表控件上设置参数 b.在子报表上添加参数 则子报表即可使用该参数 3.为子报表添加数据 添加SubDataSet.xsd,新建表,添加字段address.字段zipcode 在子报表中,指定数据集,并设计界面 添加后台代码(全部代码) using Microsoft.Reporting.WinForms; usi

水晶报表之创建子报表

本篇与asp.net没有多大关系,asp.net只是做为显示报表的载体而已.着重演示创建主报表以及子报表. 先来看看数据库中的两个表[fruit] 和[FruitKind]前者中一个字段[FruitKind_nbr] 是一个外键,也是后者的主键. 能够获取数据,当然需要创建两个存储过程[dbo].[usp_Fruit_GetAll]: 和[dbo].[usp_FruitKind_GetAll]: 这两个存储过程,我们稍后创建水晶报表时,就会使用到.首先来看看主报表的创建.下面不管是第一个还是第二

DevExpress XtraReports 入门一 创建 Hello World 报表

原文:DevExpress XtraReports 入门一 创建 Hello World 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 本次内容分一下4个步骤: 创建应用程序并添加报表 构建报表 输出报表 查看运行结果 一.创建应用程序 1.启动 MS Visual

DevExpress XtraReports 入门五 创建交叉表报表

原文:DevExpress XtraReports 入门五 创建交叉表报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 一.准备数据绑定 XRPivotGrid 控件 启动 MS Visual Studio (2005.2008 或 2010),并且新建一个或者打开一个现

报表制作2(传入一个sql主键 含子报表)

转自:http://www.cnblogs.com/ms-grf/p/6756243.html 报表js $scope.printCpTempletMasterDetail = function (cpId) { var parameters = { reportFileName: "reports/doctorstation/CpTempletMasterDetail.jasper", parameters: { 'cpId': cpId } }; var printInfoObje

支持创建主从关系报表的报表控件MindFusion.Reporting for WPF

MindFusion.Reporting for WPF是一款功能强大的报表控件,可进行可视化编辑相关的数据,可以很容易地整合该工具到你的商业应用程序中,支持创建主从关系报表.插入图像.格式化文本.可视地绑定到任何数据源.导出报表为(PNG.JPG.TIF.HTML.PDF.XPS),支持预览和打印等. 具体功能: 支持所有.NET数据源 兼容ADO.NET 多个数据源可以用于单个报表 支持绑定和非绑定两种模式 支持使用饼图对数据进行可视呈现 支持图片 支持任何WPF控件 支持多页报表 支持以W

什么是git subcommand,如何创建git子命令?

大多数git用户知道如何在git中创建一个alias以便更便利地使用相关命令.很少有人知道至少不会好好利用的是:你实际上可以为Git创建扩展或者plugin,以便上git完成任何你希望完成的工作.这就是Git subcommand! 应该如何创建git子命令呢? 1.创建一个shell或者bash脚本来完成你希望它做的工作: 2.将你的脚本文件命名为git-name,这样name就将成为git name中的子命令了! 3.将该脚本放到/usr/local/bin或其他任何$PATH指定的路径中:

UniGui中使用Grid++Report报表控件子报表获取数据的方法

Grid++Report是为优秀的报表控件,子报表是其重要功能之一,但Grid++Report提供的网页报表示范主要是以页面为主的,UniGui在Delphi中以快速编写web管理软件著称,但由于资料文档很少,经过摸索,Grid++Report的子报表要在uniGUi中正确获取子报表数据,只能通过Ajax数据回调的方式进行,在uniGUi中对前端Ajax的响应,就要是通过控件的AjaxEvent事件来处理.报表模板的展示部分的HTML代码要放在UniURLFrame控件的HTML属性中.Ajax