Вопрос

Я хочу запустить, если еще на базе командного поля в каждой строке,

Например

 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' 
Это было полезно?

Решение

Не уверен, что понимаю, но это правильно:

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); (Устанавливает десятичные места на ноль)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top