更正 if-else Crystal 报告公式中多个执行行的语法

Correct syntax for multiple execution lines inside an if-else Crystal Report formula

我的 Crystal 报告公式中一直出现错误 "A string is required here"。突出显示的部分是 "else" 部分,表明这是错误所在。我尝试了很多不同的方括号、无方括号、分号等变体……有时我会得到不同的错误,但 none 似乎有效。

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 块中有几个多行)表明这应该有效。

谢谢

基于以下 2 个站点,我真的认为您可以在 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/en-us/library/ms225356(v=vs.80).aspx

IF ([enter first condition here] or [enter second condition here])

THEN ([此处输入第一次执行]; [此处输入第二次执行]) 其他 0

对我有用(来自第一个答案中的链接)

您需要记住每个语句末尾的分号,包括 if

之后的分号

例如这不会验证 -

if (myCondition) Then (
    a:= "First"
    b:= "Second"
)

if (myOtherCondition) Then (
    a:= a + "Other First"
    b:= b + "Other Second"
)

但是,如果您添加分号,那么它将生效 -

if (myCondition) Then (
    a:= "First";
    b:= "Second";
);

if (myOtherCondition) Then (
    a:= a + "Other First";
    b:= b + "Other Second";
);

虽然 Crystal 在范围内的最后一个语句之后不需要分号,但最好在每个语句的末尾添加分号,因为这有助于避免此类问题。