2016-03-03 79 views
0

我在Crystal Reports公式中不断收到错误“此处需要字符串”。突出显示的部分是“其他”部分,表明这是错误所在。我已经尝试过很多不同的括号,没有括号,分号等等......有时我会得到一个不同的错误,但似乎没有一个可以工作。if-else 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块内有少数多行)表明这应该起作用。

感谢

+0

想你的代码..看起来像'对于loop'不允许内部'如果'..我已经分开代码时,添加为循环有错误,否则每件事情都很好..可能是其他专家将能够帮助你 – Siva

+0

谢谢你看它Siva。我认为在'If'内部可能有'For循环',因为我最终创建的解决方案就是这样做的。我仍然不确定它为什么不喜欢上面的代码。 – ingep

回答

0

基于以下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; 

编辑:这显示了另一个网站,你可以有一个如果内多条语句: https://msdn.microsoft.com/en-us/library/ms225356(v=vs.80).aspx

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

THEN([进入这里第一次执行]; [点击这里进入第二次执行]) ELSE 0

工作对我来说(从第一个答案链接)