0

Ich mag ein, wenn sonst auf Basis eines Command in jeder Zeile laufen,Hilfe mit If Else Formel

Zum Beispiel

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

else if {CommandField=1} return 'Reporting' 

habe ich versucht, es aber mit Fehler

 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 

Ergebnisse sollten wie sein

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

Antwort

1

Nicht sicher, ob ich verstehen, aber ist dies der richtige:

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 
    ) 

..., die auf diese vereinfacht werden kann:

shared numberVar layNo; 

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

den Wert von ISREPORT ..assuming nur 0 oder 1 sein kann, dann können wir vereinfachen weiter dazu:

shared numberVar layNo; 

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

aktualisieren - ich habe das letzte Beispiel geändert, um die Zähler auf ‚Berichterstattung‘ zurückgesetzt werden.

Edit:.. die ToText ändern (.. dazu ToText(layNo,0); (Dezimalstellen auf Null)

+0

Vielen Dank für die ausführliche Antwort Hundeohren setzt Es war wirklich hilfreich und arbeiten gut ich denke, das Problem ‚sonst wurde mit Wenn '. Würde der Zähler vom Ende aus fortgesetzt, wenn nach 1 eine andere' 0 'auftritt? Wie in der Folge 0,0,0,1,0 => (1,2,3, Reporting, 4)? –

+0

Und ja, Danke für die inkrementell verbesserten Versionen.Alle von ihnen arbeiten ohne Probleme.Ich habe versucht, die Null-Tipp auch und es entfernt die abschließenden Nullen :) –

+1

@Damien Joe: zum Zurücksetzen müssen Sie auf der '1' zurücksetzen und legen Sie Nein zu = 0, ich habe die Antwort aktualisiert. –