Case Statement Within Another Case

andy76andy76 Member Posts: 616
Hello,

I need to use a CASE in another CASE.

I copy here an example:

CASE UM_ResourceRuntime OF
'1' : BEGIN
CASE UM_Runtime OF
'DAYS' : lConversionGeneralCalcuted := 1;
'HOURS' : lConversionGeneralCalcuted :=
1/lConversionFactor_Day_Hours;
'MINUTES' : lConversionGeneralCalcuted :=
1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min);
'SECONDS': lConversionGeneralCalcuted :=
1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min*

lConversionFactor_Min_Sec);
ELSE
END
END;
'HOURS' : ....
...

ELSE

END;

I want to know if this is possibile in Navision and which is the right
syntax as it doesn't work correctly... Jumpying out.

Thank you

Comments

  • andy76andy76 Member Posts: 616
    I indented ti for more comprehension

    CASE UM_ResourceRuntime OF
    '1' : BEGIN
    CASE UM_Runtime OF
    'DAYS' : lConversionGeneralCalcuted := 1;
    'HOURS' : lConversionGeneralCalcuted :=
    1/lConversionFactor_Day_Hours;
    'MINUTES' : lConversionGeneralCalcuted :=
    1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min);
    'SECONDS': lConversionGeneralCalcuted :=
    1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min*

    lConversionFactor_Min_Sec);
    ELSE
    END
    END;
    '2 : .... CASE
    'a'
    'b'
    ....
    ...
    '3'
    ELSE

    END;
  • ebsoftebsoft Member Posts: 81
    andy76 wrote:
    I indented ti for more comprehension

    Try this..


    CASE UM_ResourceRuntime OF
    '1' :
    BEGIN
    CASE UM_Runtime OF
    'DAYS' : lConversionGeneralCalcuted := 1;
    'HOURS' : lConversionGeneralCalcuted := 1/lConversionFactor_Day_Hours;
    'MINUTES' : lConversionGeneralCalcuted := 1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min);
    'SECONDS': lConversionGeneralCalcuted := 1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min*
    lConversionFactor_Min_Sec)
    END
    END;
    'HOURS' : ....

    ELSE

    END;
    Regards,
    Federico

    MBS Specialist since NAV 2.0
    My experiences on Linkedin
  • kinekine Member Posts: 12,562
    To insert code you can use the [ code ] and [ /code ] BBCode. it will keep the identation etc...
    CASE UM_ResourceRuntime OF
      '1' : BEGIN
              CASE UM_Runtime OF
                'DAYS' : lConversionGeneralCalcuted := 1;
                'HOURS' : lConversionGeneralCalcuted := 1/lConversionFactor_Day_Hours;
                'MINUTES' : lConversionGeneralCalcuted := 1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min);
                'SECONDS': lConversionGeneralCalcuted := 1/(lConversionFactor_Day_Hours*lConversionFactor_Hours_Min* lConversionFactor_Min_Sec);
              END
            END;
      'HOURS' : ....
        ...
    
    END;
    

    You do not need to use ELSE if there is no commandbehind it else you need to use empty command (I mean something like ELSE ; or ELSE BEGIN END).
    Kamil Sacek
    MVP - Dynamics NAV
    My BLOG
    NAVERTICA a.s.
  • DenSterDenSter Member Posts: 8,305
    I would put the indented CASE in a function, so you don't have to program the same case in every leg of the parent CASE.
Sign In or Register to comment.