对于id 1
,我有一个像这样的行的数据id1 a1
id1 b2
id1 c3
id1 d4
id1 e5
我喜欢将它作为“a1b2c3d4e5”组合成id1的单个值。提前谢谢。
答案 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方面做同样的事情。
如果您可以提供更多信息,我们可能会提供更好的解决方案。