FastReport for.Net开发指南-主从表(Master/Detail)报表设计详解
FastReport for.Net开发指南-主从表(Master/Detail)报表设计详解
网上有很多关于FastReport for .Net报表设计文章,但是内容比较分散。我花了1天时间整理了单表,主从表报表两份格式给大家参考。
如转载文章请注明:本文来自www.csframework.com C/S框架网
下面介绍主从表(Master/Detail Report)报表:
报表设计 (Report Designer)
Group Header/Group Footer (主/从表组定义)
主/从表报表必须增加一组Group及至少两个DataBand(Data1,Data2),Group的条件设置为主/从表的主外键关联字段名,如单据号码SONO,在GroupHeader绿色区域双击打开窗体如下:
Group Condition区域设置为[tb_SO.SONO], tb_SO是表名,SONO是销售订单的单号, FastReport引擎是跟据组的条件和Band.Relation定义的关联实现主从报表的。
增加主/从表的两个DataBand
主菜单: Report/Configure Bands…
在Configure Bands窗体内定义DataBand主从关系,如下图:
绑定数据字段 (Binding Data Field)
在Data1(主表)内拖放TextObject组件,设置Text的属性对应字段名,如[tb_SO.SONO]
在Data2(从表)内拖放TextObject组件,设置Text的属性对应字段名,如[tb_SOs.StockCode]
拖放的TextObject组件可以对其绑定字段,具体作法是给Text属性赋值,比如:
[tb_SO.SONO] ,tb_SO是DataTable的名称(DataTable.Name),SONO是字段名,绑定的字段必须加中括号!(重要)
网上有很多复杂的做法,比如:写代码给TextObject .DataBindings属性增加一个DataBinding对象,其实不必要这样做,在Designer内给Text属性指定一个字符串就可以了。
报表金额或数量汇总
报表内会有金额汇总,数量汇总等数据汇总要求,在Report内增加一个Report Summary , 然后
在Data 操作面板内选择Σ Total ,右键New Total.
Edit Total 窗体:
Total Name: 汇总名称定义。
Function: 函数类型,有Sum/Min/Max/Average/Count函数可选。
Data Column or Expression: 字段名或表达式。(重要)
Evaluate on each row of the band: 用于统计计算指定Band的记录。(重要)
Evaluate if the following condition is met: 仅统计计算符合以下条件的记录。
Print on the band: 在指定的Band上放置Total对象。(重要)
Options , 只勾选Reset after print选项即可。
金额或数量小计 (Group Footer , SubTotoal)
用户可能按日期范围一次性查询多张单据,这时需要对每张业务单据的金额或数量分别进行汇总作为小计,
只要在Group Footer区域内拖放一个刚定义的Σ Total 组件就行了。
金额或数量汇总 (Report Summary, Grant Total)
对多张单据的总金额汇总,只要在Report Summary区域内拖放一个刚定义的Σ Total 组件就行了。
系统变量/系统函数 System Variables
设计好报表,然后动态加载数据源
代码设计
主/从报表需要定义一组Group及两个DataBand,然后给DataBand绑定数据源。(重要)
更重要是给明细表设置主外键关系。(重要)
代码如下:
private void button4_Click(object sender, EventArgs e)
{
//打印主从表数据
string file = Application.StartupPath @"\MasterDetail.frx";
rptMasterDetail.Load(file);//加载报表模板文件
DataSet ds = DAL.GetMasterDetailData();//取报表数据
rptMasterDetail.RegisterData(ds.Tables[0], "tb_SO"); //注册数据源,主表
rptMasterDetail.RegisterData(ds.Tables[1], "tb_SOs"); //注册数据源,从表
//
//直接注册DataSet也行,但必须对DataSet.Tables指定表名!
//FastReport是跟据表名取DataTable对象的。
//
//rptMasterDetail.RegisterData(ds);
//
//给DataBand(主表数据)绑定数据源
DataBand masterBand = rptMasterDetail.FindObject("Data1") as DataBand;
masterBand.DataSource = rptMasterDetail.GetDataSource("tb_SO"); //主表
//给DataBand(明细数据)绑定数据源
DataBand detailBand = rptMasterDetail.FindObject("Data2") as DataBand;
detailBand.DataSource = rptMasterDetail.GetDataSource("tb_SOs"); //明细表
//重要!!给明细表设置主外键关系!
detailBand.Relation = new Relation();
detailBand.Relation.ParentColumns = new string[] { "SONO" };
detailBand.Relation.ParentDataSource = rptMasterDetail.GetDataSource("tb_SO"); //主表
detailBand.Relation.ChildColumns = new string[] { "SONO" };
detailBand.Relation.ChildDataSource = rptMasterDetail.GetDataSource("tb_SOs"); //明细表
//准备工作,显示报表预览窗体
rptMasterDetail.Prepare();
rptMasterDetail.ShowPrepared(true, this);
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
具体步骤:
1. 加载报表模板文件,Load()。
2. 通过DAL层获取报表数据,返回DataSet类型,包含两张数据表(主表tb_SO, 明细表tb_SOs)。
3. RegisterData,注册数据源。(重要)
4. 给DataBand对象绑定数据源,名为Data1绑定主表,Data2绑定明细表。(重要)
5. 给明细表DataBand设置主外键关系。 (重要)
6. 准备报表,显示预览窗体。
总结:
主/从表报表比较复杂,主要是两方面:报表设计和编写源码,但通过本文的详细介绍我相信您完全可以开发一份简单的主从报表了。

FastReport for .Net 报表开发实例(C#源码下载)
http://www.csframework.com/archive/1/arc-1-20110610-1532.htm
FastReport for.Net开发指南-单表报表设计详解
CSFramework.CodeGeneratorV6|生成主从表报表 (Master/Detail Report)|C/S开发框架
DevExpress GridControl显示主从表数据(Master/Detail)|C/S开发框架
DevExpress GridView获取主从表,主子表,子级二层表的当前记录(Master/Detail)
GridControl表格实现主从表展示数据(Master/Detail)
FastReport for .Net 单表/主从表快速开发手册(doc下载)
DevExpress XtraReport 开发指南|单表报表设计详解(C#)|C/S开发框架
WinFramework轻量级开发框架 | 主从表窗体开发指南|详细二次开发|C/S开发框架
DevExpress XtraReport 开发指南 - 主从表报表设计(C#)
DevExpress XtraReport 开发指南-单表报表设计详解(C#)
FastReport.NET v2021 主从表报表打印图片 | 开发框架
WinFramework轻量级开发框架 | 主从表窗体开发指南|采购订单|C/S开发框架
支持主从表BLL单独提交明细表优化UpdateDetailKey方法|C/S框架网
FastReport for.Net 1.6.18 VS2010安装及文件说明
《CS框架V2.2-3.0业务单据窗体_主从表_快速开发指南》
FastReport for.Net 1.6.18 vs2010 简体中文破解版下载
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
