我正在使用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英尺集装箱。
答案 0 :(得分:0)
两种解决方案:
创建四个公式,一个用于ContType的每个值,定义如下:
if ContType = "20 Foot Normal" then ContQty else 0
然后,您可以在摘要公式中使用Sum({@ContQty_20FootNormal}, {Group Name})
。
为ContType
添加另一个分组级别 - 并在新组的页眉或页脚中显示总计。