Помогите с формулой If Else

Я хочу запустить if 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' 

person Zo Has    schedule 23.12.2010    source источник


Ответы (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';)

.. предполагая, что значение ISREPORT может быть только 0 или 1, тогда мы можем еще упростить до этого:

shared numberVar layNo;

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

Обновление. Я изменил последний пример, чтобы сбросить счетчик при «отчетности».

Изменить: изменить ToText(.. на этот ToText(layNo,0); (устанавливает десятичные разряды равными нулю)

person Dog Ears    schedule 23.12.2010
comment
Спасибо за подробный ответ Dog Ears. Это было действительно полезно и работало нормально. Я предполагаю, что проблема заключалась в использовании «иначе, если». Будет ли счетчик возобновляться с конца, если после 1 встречается еще один «0»? Как в последовательности 0,0,0,1,0 => (1,2,3, Отчетность, 4) ? - person Zo Has; 24.12.2010
comment
И да, спасибо за дополнительные улучшенные версии. Все работают без нареканий. Я также попробовал нулевой наконечник, и он удалил конечные нули :) - person Zo Has; 24.12.2010
comment
@Damien Joe: для сброса вам нужно сбросить значение «1» и установить для layNo значение = 0, я обновил ответ. - person Dog Ears; 24.12.2010