我有一排电话号码如下
数
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;
然而没有任何改变,感谢任何帮助。
答案 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