将行连接到水晶报表公式中的字符串

时间:2014-09-04 03:18:57

标签: crystal-reports

我有一排电话号码如下

11111111111

22222222222

3333333333

4444444444

我想将这些连接到像blwo

这样的单个字符串中

11111111111,22222222222,

3333333333,4444444444

当我在Crystal Report中使用公式时

stringvar text :='';

if(InStr(text,{CONTACTNUMBERVIEW.CONTACTNO}) = 0 )
then 
  text := text + {CONTACTNUMBERVIEW.CONTACTNO} + ",";

if OnLastRecord
then
   text := Left(text, len(text) - 1)
else
   '';



text;
然而,它确实有效,它打印出如下的修复价值

11111111111,

11111111111,22222222222,

11111111111,22222222222,3333333333,

11111111111,22222222222,3333333333,4444444444

我想到了添加此行的另一种方法

if OnLastRecord
then
   text := Left(text, len(text) - 1)
else
   '';

然后它返回三个空行,第四个正确。 请问我该怎么回事

11111111111,22222222222,3333333333,4444444444

我虽然在添加

WhilePrintingRecords;在我的公式之上,即

WhilePrintingRecords;
stringvar text :='';

if(InStr(text,{CONTACTNUMBERVIEW.CONTACTNO}) = 0 )
then 
  text := text + {CONTACTNUMBERVIEW.CONTACTNO} + ",";

if OnLastRecord
then
   text := Left(text, len(text) - 1)
else
   '';



text;

然而没有任何改变,感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你的公式走在正确的轨道上;这就是你将它放入报告中的最大问题。对于从数据库返回的每条记录,报告的“详细信息”部分将显示一次,这就是为什么它会显示字符串,因为它是按照每条新记录逐步构建的。

要解决此问题,您需要取消报告的“详细信息”部分,以阻止其显示,但不能实际评估公式。然后,创建一个新的公式,您可以将其放在“报表页脚”部分中,该部分将只显示您构建的字符串。请参阅以下两个公式:

//Incremental formula to build the 'text' variable in Details Section
//Note that this formula or the section it's placed into should be suppressed
whileprintingrecords;
stringvar text;

if(InStr(text,{CONTACTNUMBERVIEW.CONTACTNO}) = 0 )
 then text := text + {CONTACTNUMBERVIEW.CONTACTNO} + ",";

//Formula to display the 'text' variable in Report Footer
whileprintingrecords;
stringvar text;
left(text, len(text) - 1) //remove trailing comma