水晶报告; 将数据行合并为单个值

Hel*_*len 7 crystal-reports

对于id 1,我有一个像这样的行的数据

id1 a1

id1 b2

id1 c3

id1 d4

id1 e5

我喜欢将它作为"a1b2c3d4e5"组合成id1的单个值.提前致谢.

Ant*_*y K 16

一种方法是"3式"方法.您可以在每个标题中设置初始化公式,并使用评估时间指令"WhilePrintingRecords".在RunningTotal对象可用之前,这种方法是唯一可用于在"好日子"中运行总计的方法.
例如:
在组头中: - 有一个公式@InitiliseRT

WhilePrintingRecords;
StringVar ConcatenatedID;
If Not InRepeatedGroupHeader Then
    ConcatenatedID := "";
Run Code Online (Sandbox Code Playgroud)

在详细信息部分: - 具有公式@UpdateRT

WhilePrintingRecords;
StringVar ConcatenatedID := ConcatenatedID + id1;
Run Code Online (Sandbox Code Playgroud)

最后,在Group Footer中你可以看到结果: - Formula @ShowRT

WhilePrintingRecords;
StringVar ConcatenatedID;
Run Code Online (Sandbox Code Playgroud)

这应该给你最后一串"a1b2c3d4e5".

如果需要,可以为额外组添加额外的公式,为每个组添加一个变量(例如ConcatenatedIDGroup1,ConcatenatedIDGroup2).关键是始终在组之间获取名称,并初始化组头中的变量.
使用这些配方有一些限制.内置的摘要函数(Sum,Max,Count,...)或RunningTotals不能使用它们,也不能对它们进行分组.


Rya*_*yan -2

它将取决于 a1-e5 列的数据类型以及您尝试对单个值执行的操作。

如果您只是想显示该值,您可以创建一个公式,使用 Crystal 的 ToText() 函数首先将它们转换为字符串,然后使用“+”将它们连接在一起。

ToText({id1.a1}) + ToText({id1.b2}) + ToText({id1.c3}) + ToText({id1.d4}) + ToText({id1.e5})

您也可以在 DBMS 端完成同样的事情。

如果您能提供更多信息,我们也许能够提出更好的解决方案。