多语言展示
当前在线:1185今日阅读:75今日分享:44

fastreport c#教程之嵌套报表

fastreport c#教程之嵌套报表
工具/原料

fastreport

方法/步骤
1

嵌套报表有时一些复杂的报表结构中,需要报表的特殊位置显示特殊的数据。通过FastReport的Band可以创建这些报表。创建子报表可以使用“子报表组件” 。插入这种组件后,就会在设计器中添加一个新的页面,它连接着这个子报表组件。镶嵌式报表就像一系列的多页报表系统。唯一不同的就是嵌套报表显示在基础报表中特殊的位置,而不是在他的后面。当输出报表时,当FastReport系统遇到“SubReport”组件,FastReport引擎,输出关联的设计页,然后输出报表的其他部分。还可以在子报表窗面上添加子报表,增加嵌套层数。注意:可以增加嵌套报表,但最多有6层数据。

2

5.2、设计子报表    你可以在同一Band上放置两个或更多的“SubReport”组件。

3

这样允许报表设计中,输出数据可以有不同的长度,不同的宽度,不同的高度。  如你所见,报表在输出全部子报表后,生成报表结构。子报表也可以使用各种对齐方法属性。

4

5.3、子报表中的限制既然子表是主报表的一部分,他又不能在包含以下Band:“ReportTitle/ReportFooter”、“PageTitle/PageFooter/PageBackground,”和“ColumnTitle/ColumnFooter.”。把这些Band是可以放在主表单上,但是报表系统是不能对其进行处理。同理,嵌套表的选项设置一样不被理会,因为报表输出的时候,主要用到的是主表单的选项。不能把组件放在“subreport”组件的下面。

5

当显示子报表的数据时,报表系统将用子报表的内容覆盖“subReport”组件下面的位置。打印可能会出现以下情况:

6

如果要在subreport下面显示数据,可以使用child-band。在需要多个子报表的情况,这种方法一样适用,

7

5.4、PrintOnParent选项“subreport”组件又一个属性“printonparent”属性,根据情况有需要。默认属性为false。通常子表显示在主表的band上,父Band不依赖于子Band。不进行拉伸。如果“printonparent”属性设为true,则打印输出报表的子报表到主报表的包含有“subreport”组件的band上。你可以使Band可以随内容进行拉伸。

8

同为比较常用的报表工具,FineReport对嵌套类报表的解决方案与FastReport有所不同,由于工具本身的差异化,在实现报表嵌套功能时,FineReport的步骤更为简单。FineReport是用主子报表来实现嵌套功能,具体如下:

9

嵌入式主子表1. 描述嵌入式主子报表特点是在单元格中嵌入独立的报表模板,嵌入的模板称为子报表,嵌入子报表后的整体称为主报表。各子报表间格式可以不对齐,子表与主表的格式也可以不对齐,子报表能够获取主表中的值。如下图员工销售一览表:

10

2. 示例2.1 制作主报表如下图设计主表:

11

·      添加参数在主表中定义一个报表参数,参数名为销售员,通过参数查询某一个销售员的个人信息及订单信息。使用默认的参数界面,销售员参数控件选择下拉框,实际值为雇员表中的雇员ID,显示值为对应的姓名。具体可查看参数定义与参数面板制作章节。

12

2.2 添加不同参数的子报表·         子报表sub_1.cpt说明子报表1:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\MasterReport\sub_1.cpt。该子表中通过参数“ID”查询出对应销售员的个人信息。SQL语句为:SELECT * FROM 雇员 where 雇员ID = ${ID},表样为:

13

·         在主表中插入子表1右击主表B3单元格,单元格元素>插入子报表,弹出编辑子报表对话框,选择子表1所在路径;添加参数ID(子表中的参数名称),值使用公式$销售员,将主表的销售员参数值传递给子表1的ID参数,如下图设置:

14

2.3 添加相同参数的子报表·         子报表sub_2.cpt说明子报表2:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\MasterReport\sub_2.cpt。该子表中通过参数“销售员”查询出对应销售员的订单信息。SQL语句为:SELECT * FROM 订单 where 雇员ID = ${销售员},表样为:

16

3. 保存与预览保存模板,点击设计器中的分页预览,效果如上。

推荐信息