总结一个值,有条件地在另一个值上

时间:2011-08-09 09:17:21

标签: c# crystal-reports

我正在使用VS.NET 2008 C#。我使用Crystal Reports创建了一个报告。在此报告中,我有一个文本字段,容器数量(ContQty)和另一个文本字段,容器类型(ContType)。

ContType有4个不同的值,主要是“20英尺普通”,“40英尺普通”,“40英尺高立方体”和“空中飞行”。

对于某个组,我想根据ContType对ContQty求和。例如,如果一个分组有5行数据,2 x 20英尺正常和3 x 40英尺高立方体容器,则在分组总数中,它应显示2 x 20英尺集装箱和3 x 40英尺集装箱。

现在使用下面的公式我设法让它显示正确的数字,如果每个分组中的所有容器类型都相似。

WhilePrintingRecords;

NumberVar Quantity := 0;

StringVar ContType := "";

ContType := {ContType database field};

IF ContType = "20 Foot Normal" OR ContType = "By Air"

THEN Quantity := SUM({@ConvertContQtyToNumber}, {Group Name})

ELSE Quantity := 0;

Quantity;

问题是如果你有不同的ContType,它会根据最后一个ContType对所有ContQty进行求和,并将该分组的所有ContType的总和显示为最后一个ContType的容器总数。因此,如果使用上面的示例,最后一个ContType是40英尺高立方体,则总数将是5 x 40英尺集装箱。

如何让它显示正确的结果。我有2个配方,用于20和40英尺的容器。以上只适用于20英尺集装箱。

1 个答案:

答案 0 :(得分:0)

两种解决方案:

  1. 创建四个公式,一个用于ContType的每个值,定义如下:

    if ContType = "20 Foot Normal" then ContQty else 0
    

    然后,您可以在摘要公式中使用Sum({@ContQty_20FootNormal}, {Group Name})

  2. ContType添加另一个分组级别 - 并在新组的页眉或页脚中显示总计。