Crystal Reports Division公式未按要求计算

时间:2012-03-14 19:32:49

标签: crystal-reports crystal-reports-2008

我距离在Crystal 2008中完成报告只有一步之遥。我已经在下面列出了报告的快照。出于某种原因,我无法在黄色列中获得正确计算的公式。我试图将每个主要数据源/年的净A值除以每年的净A总数,以获得每个主要数据源的数据百分比。 Net A从访问中的字段中提取,并且Net A的总数是基于当前运行日期的运行总计,使用运行总计的评估部分中的公式({HNT_End_To_End_Data.REPT_YYMM} = cStr(currentdate,'yyMM'),并且该字段在每年的每次更改时重置。

黄色栏目中的公式目前为({HNT_End_To_End_Data.Net_A}/Sum ({HNT_End_To_End_Data.Net_A}))*100,并显示的价值就像它将NetA划分为所有3年的净A总额(3,727,560 / 108,666,439)而不是划分为个别年份(3727560/34981163)。我试图得到公式,将每年的每个主要数据源划分为年度净A总数。

我尝试过很多不同的公式而且没有运气,所以不管有什么建议,我都会感激。

enter image description here

1 个答案:

答案 0 :(得分:1)

您在year({sometable.somedate})上有一个小组吗?您需要将该组添加到聚合(总和)函数中:

(
 {HNT_End_To_End_Data.Net_A} 
 / 
 Sum({HNT_End_To_End_Data.Net_A}, year({sometable.somedate}))
) * 100

编辑:查看报告后,我可以看到您正在使用条件公式{HNT_End_To_End_Data.REPT_YYMM} <> cStr(currentdate,'yyMM')来取消详细信息部分。所以SUM({HNT_End_To_End_Data.Net_A},{HNT_End_To_End_Data.SERVICE_THRU_YEAR})实际上包括未显示的记录。你有很多方法可以解决这个问题。最简单的可能是为net_a创建一个新的公式:

if {HNT_End_To_End_Data.REPT_YYMM} <> cStr(currentdate,'yyMM') then
 {HNT_End_To_End_Data.Net_A}
else
 0;

然后你可以这样做:

(
 {HNT_End_To_End_Data.Net_A} 
 / 
 Sum({@net_a}, year({sometable.somedate}))
) * 100