实际应用中,经常遇到循环引用的情况,如:每条记录中有一个期初数,一个期末数,下一条中需引用之前的期末数作为本期的期初数。效果如下:

前期准备工作(包括相关工具或所使用的原料等)Java报表插件:FineReport 电脑 详细的操作方法或具体步骤
新建报表,设计表样
新建工作薄,添加数据集,SQL语句为select 日期, 入库, 出库 from 库存 where strftime('%m',日期)='06' order by 日期,查询出6月份入库出库情况,并按照日期升序排序。
如下设计报表

数据列设置如下:
单元格数据集数据列属性
A3ds1日期默认
C3ds1入库汇总-求和,其余默认
D3ds1出库汇总-求和,其余默认
循环引用设置
方法一:
生日库存
假设6月份前留下的余额为0,则在B3单元格中,输入公式:=if(&A3=1, 0, B3[A3:-1] + C3[A3:-1] - D3[A3:-1]):当&A3=0,第一天的上日库存为0,否则从第二天开始,上日库存就等于前天库存+上日入库-上日出库。
本日库存
在E3单元格中,输入公式=B3 + C3 - D3:本日库存就为上日库存+本日入库-本日出库。
注:由于E3单元格中使用了B3的值,所以上日库存不能直接用E3[A3:-1],否则会因为B3-E3-B3导致死循环。
方法二:
直接在B3单元格中输入循环引用公式=CIRCULAR(A3, B3, C3, D3),等同于公式=if(&A3=1, 0, B3[A3:-1] + C3[A3:-1] - D3[A3:-1]),如果为横向扩展。则传递第五个参数false,例如:=CIRCULAR(A3, B3, C3, D3,false)。
保存与预览
保存模板,预览效果如上。模板效果在线查看请点击CircularReference.cpt
已完成模板可参考%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\CircularReference.cpt。
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
