1

我在详细信息部分有一个记录集

例子:

Column1----Column2
value_1----5678976
value_2----7263535
value_1----1938773
value_2----3333445
value_3----2848465

因此,在报告标题中,我需要指定 Column1 中的所有独特值,以逗号分隔。从提到的示例中,正确的字符串将是:

value_1,value_2,value_3

我尝试使用公式

WhilePrintingRecords;
shared stringvar final_result;
shared stringvar current_value;

if len(final_result) = 0 then final_result = "";

current_value:= {Column1};
final_result := final_result+ "," + current_value;

这是行不通的

尝试了不同的

WhilePrintingRecords;
stringVar final_result := "";
final_result = final_result + (
if InStr(final_result, {Column1}) > 0 then ""
else final_result := "," + {Column1};
);

也没有结果。我哪里做错了?

谢谢

4

2 回答 2

1

为了使公式显示任何内容,您需要在声明它们后调用这些值。所以你的公式应该看起来更像这样:

WhilePrintingRecords; 
shared stringvar final_result; 
shared stringvar current_value := {Column1};
if len(final_result) < 1 then final_result := {Column2}; 
final_result + ", " + current_value

问题是您只会得到一条记录,因为公式位于报表标题中。如果您创建了一个数组并尝试在报表标题中显示它,也会发生同样的情况。我认为您最好的选择是创建一个子报表,然后将其显示在报表标题中。

干杯,

克里斯

编辑:这花了我一段时间,但我想我终于明白了。关键是 WhileReadingRecords 和 WhilePrintingRecords 的区别。您需要在读取记录时填写第一个公式,这将确保当您实际显示数据时(WhilePrintingRecords),Header 中的公式中有一些内容要显示。所以这里是:公式 1(放在详细信息部分):

WhileReadingRecords;
stringvar array a;
numbervar i;
if not({Column1} in a) then
(
i := i + 1;
redim preserve a[i];
a[i] := {Column1};
);
a[i]

公式 2(放置在报告标题中):

WhilePrintingRecords;
stringvar array a;
stringvar fin;
numbervar j;
for j := 1 to ubound(a) do
(
fin := fin + a[j] + ", ";
)
fin

希望这现在有效。-克里斯

于 2013-10-09T17:03:52.440 回答
0

克里斯的第二个公式中只是一个小语法错误。分号应该下移一行,在 FOR 循环的右括号之后,所以最后三行将是:

fin := fin + a[j] + ", "
);
fin
于 2020-09-04T21:03:59.100 回答