2016-03-03 78 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

工作對我來說(從第一個答案鏈接)