Crystal reports 将行连接到crystal报表公式中的字符串

Crystal reports 将行连接到crystal报表公式中的字符串,crystal-reports,Crystal Reports,我有一排电话号码,如下所示 数字 11111111 22222222 3333 444444 我想把它们连接到一个字符串中,比如blwo 1111111111122222222 33333333444444 当我在Crystal Report中使用公式时 stringvar text :=''; if(InStr(text,{CONTACTNUMBERVIEW.CONTACTNO}) = 0 ) then text := text + {CONTACTNUMBERVIEW.CONTACT

我有一排电话号码,如下所示

数字

11111111

22222222

3333

444444

我想把它们连接到一个字符串中,比如blwo

1111111111122222222

33333333444444

当我在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;
不过,它确实起作用了,它打印了一个修复值,如下所示

11111111, 1111111111122222222, 11111111111 2222222223333333333, 11111111111222222233333333334444444

我想了另一种方法,添加这一行

if OnLastRecord
then
   text := Left(text, len(text) - 1)
else
   '';
然后返回三个空行,第四行是正确的。 请问我怎样才能回来

11111111111222222233333333334444444

我想加上

打印记录时在我的公式顶部,即

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;

但是没有任何改变,任何帮助都是值得的。

你的公式是正确的;最大的问题是你如何把它放到你的报告中。对于从数据库返回的每个记录,报告的详细信息部分将显示一次,这就是为什么它会在使用每个新记录以增量方式构建字符串时向您显示该字符串的原因

要解决这个问题,您需要取消显示报告的“详细信息”部分,这将阻止它显示公式,而不是实际计算公式。然后,创建一个新的公式,您可以将其放置在报表页脚部分,该部分只显示您构建的字符串。请参见以下两个公式:

//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} + ",";


所以你需要前两张记录,第三张和第四张记录?是的,湿婆,没错。这正是我想要的。谢谢你,先生。请你解释一下第一个公式中的文字是如何对应的?我可以在第二个公式中看到,没有提到对第一个公式的引用,但它返回第一个forumalr值。@NuruSalihu声明字符串变量
text
,没有显式作用域,这意味着它默认为全局作用域,因此它的值在整个报告中保留。换句话说,任何公式都可以引用
text
的值。
//Formula to display the 'text' variable in Report Footer
whileprintingrecords;
stringvar text;
left(text, len(text) - 1) //remove trailing comma