基础(五)"/>
finereport基础(五)
一.主子报表
预期一:
在之前自由报表的基础报表上添加一订单明细表
思路:先做出自由报表,再做出跟随该笔订单账号的子报表订单明细表,要求将该笔订单的所有明细全部展示,并进行分页,每页只放一笔订单的数据
(1)整个订单明细表应该随着订单统计表的唯一标识订单编号走,也就是说它们依赖于该笔订单的信息。所以应该设置父子格;光有父子格还不够,想让两张表起关联,还需要join on条件,但是这里已经没用sql了
所以需要对明细表的产品id进行过滤 即 a.产品id=b.产品id
(2)父子格的设置:递进依赖,子表的产品id依赖主表的产品id,子表的单价依赖于子表的产品id,以此类推
(3)分页,前面说了,只想让一页展示一笔订单的信息,所以需要行后分页,但需要空一格(说实话,我不知道为什么要这样,这相当于是,这个工具内部的一些代码逻辑,在学习帆软的过程中,有很多不解,但我并没有像以前那样,去钻研,因为解决这些问题的逻辑涉及到了工具本身的设定,不容易解释),如果不空一格,就有可能将产品信息未完全展示,所以空一格很有必要,当然由于每页都要让这个分页生效
所以这个空行也需要添加父子格!!!
并且必须依赖于主表的产品id,不能是子表的产品id,我觉得按照表连接的逻辑,应该是都可以才对
但事实上,当以子表的产品id为空行的父格时,依然会导致数据不完全展示
(4)主表的其余单元格都依赖于产品id
模板:
结果:
------------------------------------------------我是分隔符-----------------------------------------------------
预期二:
思路:前面已经展示了一种让主表和子表连接的方法:即通过过滤来设置单元格中的两个字段相等,但那是静态的页面
(1)这个页面依然是主子报表,不同的时deptno这一字段可以动态浏览了,所以需要设置超链接:动态参数
在帆软中获取当前参数的公式是
这样即可让dept表中的主键变成超链接再者通过对子表emp的sql进行过滤
select * from emp where deptno=${dno}
这样既可以满足emp所只展示的数据是被筛选过的,也满足了主子表的动态性
(2)值得注意的是,设置参数时一定要选择公式,一旦设置超链接或者设置sql时任何一步出错都会导致页面崩溃
帆软已经示例输入参数的方式式:${参数}
模板:
结果:
用第一种方式实现表连接:
模板:
结果:
3.预期三
(1)作为一个主子报表,首先是分的清主报表和子报表,这样才能正确的向数据集sql添加where条件
(2)订单id和产品名称通过实际显示值来更改即数据字典(单元格属性-形态-数据字典)
(3)两张表的联系通过where条件,在主表中建立超级链接、对子表的数据集的sql进行条件过滤,做到展示的子报表的订单id一一对应
(4)post和get的区别:属于网络知识
(5)分页:seq()或者row()
综上一共要注意: 确定主子报表-----添加超级链接-分页-连接两表-设置数据字典
结果:
二.小结
主子表既可以通过滤两张表相同的字段来实现链接
也可以通过sql条件来实现连接
其次对超级链接有了进一步的认识:动态参数
以及帆软中获取当前单元格参数的公式:$$$
更多推荐
finereport基础(五)
发布评论