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

时间:2010-08-24 15:40:48

标签: crystal-reports

对于id 1

,我有一个像这样的行的数据

id1 a1

id1 b2

id1 c3

id1 d4

id1 e5

我喜欢将它作为“a1b2c3d4e5”组合成id1的单个值。提前谢谢。

3 个答案:

答案 0 :(得分:14)

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

WhilePrintingRecords;
StringVar ConcatenatedID;
If Not InRepeatedGroupHeader Then
    ConcatenatedID := "";

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

WhilePrintingRecords;
StringVar ConcatenatedID := ConcatenatedID + id1;

最后,在群组页脚中,您可以看到结果: - 公式 @ShowRT

WhilePrintingRecords;
StringVar ConcatenatedID;

这应该给你最后一串“a1b2c3d4e5”。

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

答案 1 :(得分:0)

那么,您想将多个中的数据连接成一行进行显示? Crystal Reports真的不是为那种东西而构建的。即使你可以,我仍然建议先做服务器端,然后将其送入Crystal。

这不会太困难,只需用您选择的语言循环浏览数据。但Crystal是为显示和格式化数据而构建的,具有一套不错的(但不是很广泛的)数据操作工具。我不认为这是最好的方式。

答案 2 :(得分:-1)

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

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

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

你也可以在DBMS方面做同样的事情。

如果您可以提供更多信息,我们可能会提供更好的解决方案。