子报表模型

阅读(2036) 标签: 主报表, 子报表, 复合报表,

基本概念:

主报表和子报表

在我们的应用中,我们常常可以看到某个报表中间包含了一片或者多片单元格,这些单元格片段和报表往往有一个共同的关注对象,但是同时各自又有一个独立的主题,片与片之间往往没有任何关联。我们把这样的报表称为主子报表或者复合报表,有着共同主题的单元格片段称为子报表,而复合报表本身称为主报表。

 

1

 

润乾报表中,由于其独特的单元格模型,因此对子报表提供了两种实现方式,分别称为引入式子报表和嵌入式子报表。

 

引入式子报表

我们规定,当子报表进行运算时,以当前格为扩展格,分别向右、向下进行扩展,结果子报表有几行几列,则扩展出几行几列。扩展后的子报表占用主报表的空白行列,接受主报表的行高列宽,整表依旧是由统一的二维矩形单元格组成,这种子报表称为引入式子报表。

 

1

扩展前:

 

扩展后:

 

嵌入式子报表

我们规定,当子报表进行运算时,从展现布局上看,子报表始终缩在当前格内,或者仅仅把当前格撑大,并不对当前格周边的格子造成影响,这种报表称为嵌入式子报表

 

1

 

嵌入式报表的特点是格中嵌表,子表和母表格线不对齐,子表间格线也不对齐。

 

这种子报表不能导出excel,因为excel不支持格中嵌表的模式,因此导出excel时只能保留主报表

 

子表模型

润乾报表的子表模型是逐级嵌套的,即子报表本身也可以是个复合报表,如此一级级嵌套下去。

 

1

 

运算

子表参数传递

子报表往往有参数,而参数统一由主报表为入口,由主报表传递给子报表。子报表的参数可以是主报表的参数,或者是主报表的表达式计算而来,也可以是常数。

 

通过主子表间的参数传递,可以实现主表和子表间的关联关系。

 

主子表数据集的关系

主子表共用一个报表运算环境,因此主子表的参数如果重名,意味着共用一个参数,如果数据集重名,意味着共用一个数据集,因此如果主子表的参数、数据集的内容不同,不得重名

 

当然,如果内容相同,建议用相同的名字,这样子表就不用重新访问数据库构造数据集了。

子表引用规则

引入式的子报表扩展后,和母主报表形成了一个统一的二维矩形单元格,因此子报表的源格不保留,此时主报表不能访问子报表的值。

 

嵌入式的子报表扩展后,是个独立的报表,因此子表源格一直保留着,主报表可以保留子报表的值,其访问方法为:

 

语法规则:

eval( StringExp, SubRptExp )

参数说明:

StringExp 返回字符串的表达式

SubRptExp 返回嵌入式子报表的表达式

返回值:

StringExp表达式在子报表中的运算结果值

举例:

A1为嵌入式子报表,要取A1中子报表中B2的值加10,则表达式为eval("B2+10", A1)eval("B2",A1)+10