水晶公式循环仅返回最后一条记录

时间:2012-08-14 15:30:02

标签: crystal-reports concatenation formula

使用Crystal XI

我有两个数组 - 一个捕获一个时间点列表,另一个捕获与它们相关的时间。

我需要关联这两个,以便输出看起来像

timepoint[1] - time [1]  - timepoint[2] - timepoint[2]; 

timepoint[3] - time[3]  -  timepoint[4] - timepoint[4];

所以我冤枉了下面的代码 - 数组在标题中被初始化,然后在详细信息部分中加载数据,然后显示在组页脚中(三个公式技巧)。我可以单独显示两个数组中的数据

  

(as timepoint[1], timepoint[2], etc)

这个问题只有在试图将两者结合起来时才会产生。下面的代码只打印gorup数组中的最后两个记录而不是所有记录。 所以,如果有5个时间点,则显示以下代码的5倍

  

timepoint [4] -time [4] - timepoint [5] -time [5]

我最终必须在两个相关的日期时间之间执行计算,但现在只是试图让关联和显示工作。

Shared stringVar array Timepoints;
Shared DateTimeVar array Times;
local stringVar combineStr;
local numbervar i;

For i:=1 to UBound(Times)-2 do   
(combineStr := Timepoints[i] + ','+ totext(Times[i]) + '-' + 
Timepoints[i+1] + totext(Times[i+1]) + ',');
 combineStr;

感谢您查看此内容

1 个答案:

答案 0 :(得分:1)

您在每次迭代时都会覆盖combineStr变量的先前值。你需要这样做:

.
.
.
For i:=1 to UBound(Times)-2 do   
(combineStr := combineStr + Timepoints[i] + ','+ totext(Times[i]) + '-' + 
Timepoints[i+1] + totext(Times[i+1]) + ',');

combineStr;

其他一些事情:1。您需要连接换行符,chr(10),而不是迭代之间的逗号,以显示问题中的示例。 2.您需要在for-loop中添加“step 2”,否则您将打印两次时间点。