0

我在具有多行文本框值的数据集中有一个字段。我想分割该记录,将其存储到一个数组中,并且当我通过for循环从数组中获取值时,我想为每行预先添加一个“*”。我写了一个公式,但它只适用于2个值。之后,它不工作,我无法得到如何检索像这样的值。Crystal Report公式问题:如何将多行文本值分割到数组中以及如何通过forloop获取它

我想要得到的结果是:

* 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; 
+0

你的公式在逻辑上基本上是正确的,但是代码本身很杂乱,并且有错别字。回过头来清理它,你可能会发现它会为你工作。为了让你开始:你用什么'x'和'数字'变量?你为什么以你的方式初始化输出字符串“y”?仔细检查您连接到输出的字符。 – Ryan 2014-09-25 13:15:18

回答

0

而是一个长的公式打破的到数组中并操作每一行,为什么不用换行符替换换行符星号?

"* " & replace(trim({Touche.Concerns}), "\r\n", "\r\n* ");

领先的“*”是将在第一行焦炭,trim函数被调用,以消除任何尾随换行符(所以不会只用星号线)。

作为便笺,请在连接字符串时使用&,而不要使用+ char。使用+有时可能会导致数字值被加在一起的强制。例如,"12" + "34"将产生46而不是1234&字符确保使用字符串连接。

相关问题