将重复条目合并为一行

时间:2017-06-13 15:03:47

标签: crystal-reports

我的报告如下:

Number   Route    Transportnumber
1         A            1A
2         B            2B
3         C            3C
3         C            3CE

如何从第3行获取信息?它应该看起来像:

Number   Route    Transportnumber
1         A            1A
2         B            2B
3         C            3C, 3CE

我在存储过程中尝试了以下公式:

whileprintingrecords;
stringvar s;
if s="" then
     s:={sp.Transportnumber}
else
     s:=s+", "+{sp.Transportnumber};

这导致:

Number   Route    Transportnumber   Formula
1         A            1A              1A
2         B            2B              2B
3         C            3C              3C
3         C            3CE             3C, 3CE

1 个答案:

答案 0 :(得分:1)

在报告中,根据Route创建。然后隐藏“组头和详细信息”部分。相反,将 all 放在要在组尾中看到的字段中。此步骤确保即使Routes重复,您也只能看到每个字母中的一个。

然后使用名为RouteTransports的共享变量创建公式。将其放在“详细信息”部分中。每当小组更改时,请使用RouteTransports = ""重置它。只要该组未更改,请将Transportnumber的值添加到您的变量中。类似的东西:

RouteTransports = RouteTransports & ", " & {yourtable.Transportnumber}

最后,在“组尾”中创建最终公式ShowRouteTransports,以RIGHT(RouteTransports, LEN(RouteTransports)-2)显示结果。最终结果如下所示:

Number   Route    Transport Number
1        A        1A
2        B        2B
3        C        3C, 3CE