2014-11-07 132 views
0

我很难从组中的多个汇总值中获取maxiumu值。例如,我在报告组部分总结了预算,承诺,成本和预测总数,现在在组页脚中,我需要选择四个总数中的最大值。我应该怎么做?多个汇总值的最大值

编辑............................................. ...............

1) Sum ({@Total Contracted Value}, {JCM_MASTER__COST_CODE.Cost_Code}), 
2) Sum ({@Current Budget}, {JCM_MASTER__COST_CODE.Cost_Code}) 
3) Sum ({@Costs to Date}, {JCM_MASTER__COST_CODE.Cost_Code}) 
4) Sum ({@Projected Final PM Input}, {JCM_MASTER__COST_CODE.Cost_Code}) 

,我需要找到组页脚节的四个总计

+0

Hello Sarah。我不完全知道,但我认为你应该创建公式领域,你可以写,以检查哪个值比以前更大。 – Shell 2014-11-07 03:15:05

+0

@Sarah我编辑你的问题添加您的编辑...所以这个问题将更有意义 – Siva 2014-11-08 07:22:53

回答

0

您需要创建两个公式领域内的最高值第一个用于变量初始化,第二个用于大于其他值的条件。

1:创建第一个公式字段并记下以下代码。将该公式字段的名称输入Initialization

WhilePrintingRecords; 
numbervar dMax := 0; 

然后将该公式字段放置在报表头部分中。

2:现在,创建另一个公式字段并记下该公式字段中的以下代码。

WhilePrintingRecords; 
//dont initialize the 0 in this variable we have already initialized in 1st formula field 
numbervar dMax; 

//Following condition will check that current sum of that field is greater than 
//values stored dMax variable. If the condition is satisfied then value will be initialized 
//In dMax variable. 
if (IsNull(Sum({TableName.FieldName}, {TableName.GroupField})) = False AND 
    Sum({TableName.FieldName}, {TableName.GroupField}) > dMax) 
    dMax:=Sum({TableName.FieldName}, {TableName.GroupField}); 

dMax; 

现在,将此公式字段放在计算汇总值的位置。例如在组页脚中。

UPDATE:

如果要找出最大值withing四组总。然后在公式字段中写下以下代码并将其放在组页脚中。

WhilePrintingRecords; 
numbervar dMax1:=0; 
if (Sum ({@Total Contracted Value}, {JCM_MASTER__COST_CODE.Cost_Code})) > (Sum ({@Current Budget}, {JCM_MASTER__COST_CODE.Cost_Code})) 
    dMax1:=Sum ({@Total Contracted Value}, {JCM_MASTER__COST_CODE.Cost_Code}); 
else 
    dMax1:=Sum ({@Current Budget}, {JCM_MASTER__COST_CODE.Cost_Code}); 


numbervar dMax2:=0; 
if (Sum ({@Costs to Date}, {JCM_MASTER__COST_CODE.Cost_Code})) > (Sum ({@Projected Final PM Input}, {JCM_MASTER__COST_CODE.Cost_Code})) 
    dMax2:=Sum ({@Costs to Date}, {JCM_MASTER__COST_CODE.Cost_Code}); 
else 
    dMax2:=Sum ({@Projected Final PM Input}, {JCM_MASTER__COST_CODE.Cost_Code}); 

if (dMax1 < dMax2) 
    dMax1 := dMax2; 

dMax1; 
+0

谢谢。我会尝试。 – Sarah 2014-11-07 04:06:18

+0

它不起作用。它不会从四组总数(预算,承诺,成本,预测)中选择最大值... – Sarah 2014-11-07 18:03:07

+0

我的四组总数是: – Sarah 2014-11-07 18:10:01

0

尝试使用数组...

存储在数组中,并在组页脚所有值只取最高的数组。

当您汇总值时,同时将值存储在数组中,并从数组中检索最大值。下面的公式发生之后中总结的数据组

//@Storedatainarray 
Shared StringVar Array x; 

x:=x+totext(Sum ({field}, {@group})); 

现在再创建一个公式@display

EvaluateAfter(@Storedatainarray); 
Whileprintingrecords; 
Shared StringVar Array x; 

Maximum(x); 

让我知道是怎么一回事呢?

编辑....................................

创建公式@Display和在group footer中写下以下代码:

Shared StringVar Array x; 

    x[1]:= Sum ({@Total Contracted Value}, {JCM_MASTER__COST_CODE.Cost_Code}); 
    x[2]:= Sum ({@Current Budget}, {JCM_MASTER__COST_CODE.Cost_Code}); 
    x[3]:= Sum ({@Costs to Date}, {JCM_MASTER__COST_CODE.Cost_Code}); 
    x[4]:= Sum ({@Projected Final PM Input}, {JCM_MASTER__COST_CODE.Cost_Code}); 
Maximum(x); 
+0

它不起作用。四列总结了不同的方法,但不知何故在小组足总节,我需要比较四个总数,并选择最大值。例如,如果总预算是5000,承诺是3000,到目前为止的成本是6000,预测是5500.我需要有一个公式来显示6000. – Sarah 2014-11-07 18:05:37

+0

您是否可以编辑您的问题以包含报告结构,以便我能够理解确切问题 – Siva 2014-11-07 18:07:44

+0

1)总和({@总合约值},{JCM_MASTER__COST_CODE.Cost_Code}),2)总和({@当前预算},{JCM_MASTER__COST_CODE.Cost_Code})3)总和({@收到日期},{JCM_MASTER__COST_CODE .Cost_Code})4)Sum({@Projected最终PM输入},{JCM_MASTER__COST_CODE.Cost_Code}),我需要找到四个总计中的最高值在组页脚部分 – Sarah 2014-11-07 18:12:38