Crystal reports Crystal Report公式问题:如何将多行文本值拆分到数组中,以及如何通过forloop在中获取它

Crystal reports Crystal Report公式问题:如何将多行文本值拆分到数组中,以及如何通过forloop在中获取它,crystal-reports,crystal-reports-2008,crystal-reports-8.5,Crystal Reports,Crystal Reports 2008,Crystal Reports 8.5,我在数据集中有一个字段,它有一个多行文本框值。我想分割该记录,将其存储到一个数组中,当我通过for循环从数组中获取值时,我想在每一行前面加一个“*”。我已经写了一个公式,但它只适用于2个值。在那之后,它就不起作用了,我无法得到如何像这样检索值 我希望结果是: * 123 * 234 * 786 但我得到的结果是: *123 234 786 我的公式是 Local StringVar y; Local StringVar x; Local NumberVar i; y := ""+ chr

我在数据集中有一个字段,它有一个多行文本框值。我想分割该记录,将其存储到一个数组中,当我通过for循环从数组中获取值时,我想在每一行前面加一个“*”。我已经写了一个公式,但它只适用于2个值。在那之后,它就不起作用了,我无法得到如何像这样检索值

我希望结果是:

* 123
* 234
* 786 
但我得到的结果是:

*123
234
786
我的公式是

Local StringVar y;
Local StringVar x;
Local NumberVar i;

y := ""+ chrw(10);
x := y;

Stringvar Array strings := Split({Touche.Concerns}, "\r\n");
Stringvar Array numbers;


For i :=1 To Ubound(strings) Do
(
y := y + chrw(10)+ "$" + strings[i];
);
y;

与其用一个长长的公式将换行符分解成数组并操纵每一行,为什么不用换行符和星号替换换行符呢

“*”&replace(trim({Touche.Concerns}),“\r\n”、“\r\n*”

前导的“*”将字符放在第一行,并调用
trim
函数删除任何尾随的换行符(因此不会有一行只带星号)

作为旁注,在连接字符串时使用
&
,而不是
+
字符。使用
+
有时会导致强制将数值添加到一起。例如,
“12”+“34”
将产生
46
,而不是
1234
&
字符确保使用字符串连接。

您的公式在逻辑上基本正确,但代码本身很混乱,并且有打字错误。回去把它清理干净,你可能会发现它对你有用。开始:您使用
x
number
变量做什么?为什么要以这种方式初始化输出字符串
y
?仔细检查要连接到输出的字符。