我有一个水晶报表,该报表可以跟踪12个月内每月库存商品的销售情况,然后显示每月的平均销售量。我有2个相同的公式字段,每个字段具有唯一的名称,但代码相同。第一个公式字段为每个库存项目返回零,而第二个公式返回正确计算的12个月内的平均值。这两个公式字段都位于报表的同一部分。
这是两个公式字段的代码。
WhilePrintingRecords;
Shared NumberVar num;
Shared NumberVar total;
Shared NumberVar result;
If num = 0 Then result := 0 else result := total / num;
result;
我的报告当前正在工作,因为第二个公式字段按预期运行。此时,我想了解为什么第一个公式字段不起作用。
我尝试删除了在分母中检测到零的逻辑。删除此逻辑后,当前有效的公式将继续正常工作。损坏的公式将引发“除以零”错误。我也对工作公式在删除此逻辑后继续工作感到惊讶,因为我的数据集中有行在某些期间具有NULL值。这是由于在报告第一个期间之后的一段时间内,对于添加新库存项目的报告的限制。例如,如果报告涵盖了期间1至12(1月至12月)的2018年,并且在期间5将新商品添加到库存中,则它应在期间1至4返回NULL值,并为期间5返回一个数值。至8。12个期间的平均值不应包含NULL值的期间。为此,我使用一个变量来计算项目包含数值数据的时间段,并在计算平均值时将此计数器用作分母。
我创建了其他公式字段,以输出每个单独变量的值,并将其放在报告中。我希望所有变量的值在包含它们的部分的每次迭代中都具有。
有人可以帮助我理解为什么这两个相同的公式字段各自输出不同的结果吗?
答案 0 :(得分:0)
更改
Shared NumberVar result
到
Local NumberVar result
使用共享时,一个公式中的值更改会影响另一个公式中的值更改。