更正 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.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 在范围内的最后一个语句之后不需要分号,但最好在每个语句的末尾添加分号,因为这有助于避免此类问题。
我的 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.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 在范围内的最后一个语句之后不需要分号,但最好在每个语句的末尾添加分号,因为这有助于避免此类问题。