温馨提示:本文翻译自stackoverflow.com,查看原文请点击:if statement - Correct syntax for multiple execution lines inside an if-else Crystal Report formula
crystal-reports if-statement

if statement - if-else Crystal Report公式中多个执行行的正确语法

发布于 2020-03-29 21:54:12

我在Crystal Report公式中始终收到错误消息“此处需要字符串”。突出显示的部分是“其他”部分,表明这是错误所在。我已经尝试了括号的许多不同变体,没有括号,分号,等等……有时我会得到一个不同的错误,但似乎没有任何作用。

Local stringVar outputString := ""; 
if isNull({Evaluation.Strategic}) then
(
 outputString := "None"
)
else
 (
stringVar array x := split({Evaluation.Strategic},"|"); 
Local numberVar i;
For i:=1 to Count(x) do
   (
   outputString := outputString + x[i] + Chr(10)
   )
);
outputString;

谁能给我指出正确的语法来完成我想做的事情?我在网上找到的所有样本(if-else块中很少有多行)建议这样做。

谢谢

查看更多

提问者
ingep
被浏览
63
ingep 2016-03-04 22:03

基于以下两个站点,我真的认为您可以在if-else中包含多个语句,但是我没有尝试过。

http://www.experts-exchange.com/questions/23735693/Multiple-line-IF-statement-in-Crystal-Reports.html

http://www.kenhamady.com/formulas/form08.shtml

我最终通过将逻辑重构为如下所示来使其工作。这有点笨拙,但它使CR编译器满意。

//Syntactically correct - this worked:
//-------------------------------------
Local stringVar outputString := ""; 
stringVar array x := "";
Local numberVar i; 

If isNull({Evaluation.Strategic}) Then
   (
    x := ""
   )
Else
   (
    x := split({Evaluation.Strategic},"|");
   );

If x <> "" Then
(
    For i:=1 to Count(x) do
     (
     outputString := outputString + x[i] + Chr(10)
     )
)
else
(
For i:=1 to Count(x) do
     (
     outputString := "None";
     );
);

outputString;

编辑:另一个网站建议您在If中可以包含多个语句:https : //msdn.microsoft.com/zh-cn/library/ms225356(v=vs.80).aspx