0

我想在每行一個CommandField的基礎上運行的,如果別的,幫助如果Else公式

例如

If {CommandField=0} Update counter by 1 return counter 

else if {CommandField=1} return 'Reporting' 

我嘗試過,但有錯誤

 stringVar layerType; 
shared numberVar layNo; 

    if({Command.ISREPORT}=0) then 
      layNo:=layNo+1;layerType:=layNo;layerType 

    else if ({Command.ISREPORT}=1) then 
     layerType:='Reporting'; layerType 

結果應該像

ISREPORT LayerNo 
    0   1 
    0   2 
    0   3 
    0   4 
    1  'Reporter' 

回答

1

不知道我理解,但是這是正確的:

stringVar layerType; 
shared numberVar layNo; 

    if({Command.ISREPORT}=0) then 
    ( layNo:=layNo+1; 
      layerType:=ToText(layNo); 
      layerType; 
    ) 
    else 
    ( if ({Command.ISREPORT}=1) then 
      layerType:='Reporting'; 
      layerType 
    ) 

...它可以簡化爲這樣:

shared numberVar layNo; 

    if({Command.ISREPORT}=0) then 
    (  
      layNo:=layNo+1; 
      ToText(layNo); 
    ) 
    else 
    (if ({Command.ISREPORT}=1) then 
      'Reporting';) 

..assuming ISREPORT的值只能是0或1,那麼我們就可以進一步簡化這個:

shared numberVar layNo; 

    if({Command.ISREPORT}=0) then 
    (  
      layNo:=layNo+1; 
      ToText(layNo); 
    ) 
    else 
    (
     layNo:=0; 
     'Reporting'; 
    ) 

更新 - 我已經改變了過去的例子來重置「報告」的櫃檯。

編輯:。 改變ToText(..這個ToText(layNo,0);(設置小數爲零)

+0

感謝您的詳細答覆狗耳朵這是真正有用的和精細的工作,我想這個問題是使用「其他如果'。如果在1之後遇到另一個'0',計數器是否會從結尾恢復?像序列0,0,0,1,0 =>(1,2,3,報告,4)? – 2010-12-24 05:15:30