Crystal reports 当打印记录不起作用时

Crystal reports 当打印记录不起作用时,crystal-reports,Crystal Reports,我有一份报告正在手动进行运行总计,即: shared numbervar Amount:={#Amount}; shared numbervar TotalAmount:=Amount+TotalAmount; Amount; 然后,我有一个单独的公式,试图通过将金额除以总金额来计算平均值: whileprintingrecords; shared numbervar TotalAmount; if {@Amount}<>0 then {@Amount}/TotalAmount;

我有一份报告正在手动进行运行总计,即:

shared numbervar Amount:={#Amount};
shared numbervar TotalAmount:=Amount+TotalAmount;
Amount;
然后,我有一个单独的公式,试图通过将金额除以总金额来计算平均值:

whileprintingrecords;
shared numbervar TotalAmount;
if {@Amount}<>0
then
{@Amount}/TotalAmount;
相反,报告最终看起来像:

Amount | %
$100   | 100%
$50    | 33%
$50    | 25%
____ 
$200

为什么计算不进行到下一个公式中,可能会有很多问题

  • 与报告中的第一个公式放置位置相比,您的第二个公式放置位置可能错误
  • 除了打印记录时使用
    外,还可以尝试使用
    EvaluateAfter
  • 打印记录时;
    评价者(@Formula1);
    共享号码或总金额;
    如果{@Amount}0
    然后
    {@Amount}/TotalAmount

    编辑---------------------------------------------------------------------------------------------
    你们这里的问题是,在每一个层次上,它都是以总量而不是最终值为基础的。就像第一个记录值是
    100
    @金额是100
    。现在100/100是100%,现在第二个记录值是
    50
    @金额是150
    ,所以
    %是50/150,它是33.33
    。最好的选择是使用子报表并将最终值
    200
    作为子报表的输入值传递给子报表,并在子报表中显示您的数据。

    很难理解您要做什么。您将这些公式具体放在报告中的什么位置?放置它们的位置非常重要,因为crystal将以这种方式更新变量。您是否可以添加一些示例数据以及您正在尝试执行的操作?使用EvaluateAfter(@Formula1)会得到相同的结果。在最终的总数之后,它仍然没有实际评估它。
    Amount | %
    $100   | 100%
    $50    | 33%
    $50    | 25%
    ____ 
    $200