【问题标题】:Whileprintingrecords Not Working打印记录时不起作用
【发布时间】:2014-05-02 11:53:25
【问题描述】:

我有一份手动计算运行总计的报告,即:

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

【问题讨论】:

  • 很难理解你想要做什么。您究竟将这些公式中的每一个放在报告中的什么位置?将它们放在哪里很重要,因为水晶将如何更新您的变量。您能否添加一些示例数据以及您想要做什么?

标签: crystal-reports


【解决方案1】:

计算不进行到下一个公式可能有很多问题

  1. 与报告中的第一个公式放置相比,第二个公式的放置可能有误。
  2. 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 作为输入值传递给子报表并在子报表中显示您的数据。

【讨论】:

  • 使用 EvaluateAfter(@Formula1) 具有相同的结果。在最终总数之后,它仍然没有真正评估它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2020-08-16
  • 2017-08-29
  • 1970-01-01
  • 2013-04-01
  • 2016-03-18
相关资源
最近更新 更多