Crystal Reports 2008中求和公式的最大值和最小值

时间:2014-04-10 10:48:58

标签: global-variables max formula crystal-reports-2008 minimum

求和公式问题的最大值和最小值

您好,我目前正在使用Crystal Reports 2008,它从Oracle数据库获取数据。我仔细研究了这个问题,但我无法找到所需的信息。我有关于从给定公式中获取最大值和最小值的查询,该公式总计包含2个或更多字段。我正在使用的信息的快照是:

Field1 = dB1.Left_Serious
Field2 = dB1.Left_Dangerous
Field3 = @Tester
Formula = @LeftTot

字段1 + 2是测试者为每次左测试给出的总分。

Test   Field1   Field2   Field3
1      2.0      4.0      J Adams
2      1.0      1.0      J Adams
3      1.0      0.0      S Grey
4      0.0      1.0      S Grey
5      5.0      0.0      D Jones
6      5.0      8.0      D Jones

获得每个测试人员左测试的总计的公式使用测试人员的分组:

@LeftTot  
Sum ({dB1.Left_Serious}, {@Tester}) + Sum (dB1.Left_Dangerous}, {@Tester})

使用上述详细信息,我们得到:

J Adams = 8.0 
S Grey = 2.0 
D Jones = 18.0 

因此,最大数字为18.0,最小数字为2.0,所需差异为16.0。

我遇到的问题是我无法使用最大或最小命令,因为Crystal 2008不允许您在总和两个字段的公式上使用像“最大值”这样的汇总函数。我知道你可以在数据库中创建一个新的聚合字段来解决问题,但是我目前没有数据库的管理员访问权限,也无法创建任何新的数据表或字段。

我试图通过在3个新公式中使用以下代码来推动球滚动:

@LeftTotGrpHdr
//This Formula needs to be placed into the Group Header to reset variable
WhilePrintingRecords;
NumberVar LEFTTL:=0

@LeftTotGrpFtr
//This Formula needs to be placed into the Group Footer to display variable
WhilePrintingRecords;
NumberVar LEFTTL

@LeftTotCr
//This Formula declares and works out Total Left Tests 
WhilePrintingRecords;
Global NumberVar LEFTTL:=LEFTTL + {@LeftTot}

然而,当我尝试使用

Maximum({@LeftTotCr})

在新公式中我仍然收到错误消息“此字段无法汇总。”

还有其他办法吗?

干杯

Daveyt

1 个答案:

答案 0 :(得分:0)

有一种解决方法。

当您汇总该值时,同时将值存储在数组中并从数组中反转最大值和最小值。

    //@LeftTot  
    Shared StringVar Array x;

    x:=x+totext(Sum ({dB1.Left_Serious}, {@Tester}) + Sum (dB1.Left_Dangerous}, {@Tester}));
1

现在再创建一个公式@display

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

Maximum(x);

以同样的方式使用minimum函数进行最小化。

让我知道它是怎么回事。