历史版本12 :循环引用 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

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

2. 示例编辑

2.1 新建报表,设计表样

新建普通报表,添加数据集,SQL 语句为select 日期, 入库, 出库 from 库存 where strftime('%m',日期)= '06' order by 日期,查询出 6 月份入库出库情况,并按照日期升序排序。

如下设计报表

数据列设置如下:

2.2 循环引用设置

方法一:

上日库存

假设 6 月份前留下的余额为 0,则在 B3 单元格中,输入公式:=if(&A3 = 1, 0, B3[A3:-1] + C3[A3:-1] - D3[A3:-1]):当&A3=1,第一天的上日库存为 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)

2.3 保存与预览

保存模板,预览效果如描述中所示。

模板效果在线查看请点击 循环引用.cpt

已完成模板可参考%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\循环引用.cpt