我有一个手动执行总计的报告,即:
shared numbervar Amount:={#Amount};
shared numbervar TotalAmount:=Amount+TotalAmount;
Amount;
然后我有一个单独的公式,试图通过将金额除以总金额来计算平均值:
whileprintingrecords;
shared numbervar TotalAmount;
if {@Amount}<>0
then
{@Amount}/TotalAmount;
尽管使用了whileprintingrecords,但总金额并未显示实际总金额,而是显示金额打印时的总金额。那么我做错了什么?
编辑: 这两个公式都在一组的页脚中。作为一项测试,我甚至删除了这些组,并将它们都放在详细信息部分中,没有任何组。我甚至删除了跑步总数,尝试将其从混音中取出,没有任何变化。
我正在尝试计算每个金额对总金额的贡献百分比。所以报告看起来像
Amount | %
$100 | 50%
$50 | 25%
$50 | 25%
____
$200
相反,报告最终看起来像:
Amount | %
$100 | 100%
$50 | 33%
$50 | 25%
____
$200
答案 0 :(得分:0)
为什么不对下一个公式进行计算可能会有很多问题
whileprintningrecords
也尝试使用EvaluateAfter
。 whileprintingrecords;
EvaluateAfter(@Formula1);
shared numbervar TotalAmount;
if {@Amount}<>0
then
{@Amount}/TotalAmount;
编辑---------------------------------------------- -----------------------------------------------
你在这里遇到的问题是每个级别的总量都不是最终值。就像第一个记录值是100
和@amount is 100
..现在100/100现在是100%,第二个记录值是50
和@amount is 150
所以% is 50/150 it is 33.33
。最佳选择是使用子报告并将最终值200
作为输入值传递给子报告,并在子报告中显示您的数据。