[RESOLVIDO] Erro tratamento Month()

Discussão em 'EMS , HCM e Totvs 11' iniciado por well, Julho 29, 2013.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. well

    well Sem Pontuação

    Bom dia.
    Estou realizando um tratamento no mês e ano para as datas informadas na tela.
    Porém ele não estão realizando a condição corretamente.
    ---Parte do código. ---
    Assign i-nr-ano-1 = year(DATE(fl-dt-ini:SCREEN-VALUE)).
    i-nr-ano-2 = year(DATE(fl-dt-fin:SCREEN-VALUE)).
    i-nr-ano-r = i-nr-ano-2 - i-nr-ano-1.

    Assign i-nr-mes-1 = month(DATE(fl-dt-ini:SCREEN-VALUE)).
    i-nr-mes-2 = month(DATE(fl-dt-fin:SCREEN-VALUE)).


    IF i-nr-ano-r > 0 then
    ASSIGN i-nr-ano-m = i-nr-ano-r * 12.

    IF i-nr-ano-r = 1 THEN
    IF i-nr-mes-1 = 01 AND i-nr-mes-2 = 12 THEN
    ASSIGN i-nr-mes-r = i-nr-ano-m + 12.

    IF i-nr-mes-1 = i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = i-nr-ano-m.

    IF i-nr-mes-1 > i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = (i-nr-ano-m - i-nr-mes-1) + i-nr-mes-2.

    IF i-nr-mes-1 < i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = (i-nr-ano-m - i-nr-mes-2) + i-nr-mes-1.

    IF i-nr-ano-r > 1 THEN
    IF i-nr-mes-1 = 01 AND i-nr-mes-2 = 12 THEN
    ASSIGN i-nr-mes-r = i-nr-ano-m + 12.
    c-texto = "Um ano".

    IF i-nr-mes-1 = i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = i-nr-ano-m.
    c-texto = "Meses iguais".

    IF i-nr-mes-1 > i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = ((i-nr-ano-m - i-nr-mes-1) + i-nr-mes-2) + i-nr-ano-m.

    IF i-nr-mes-1 < i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = ((i-nr-ano-m - i-nr-mes-2) + i-nr-mes-1) + i-nr-ano-m.

    IF i-nr-ano-r = 0 then
    IF i-nr-mes-1 = 01 AND i-nr-mes-2 = 12 THEN
    ASSIGN i-nr-mes-r = 12.

    IF i-nr-mes-1 = i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = 1.

    IF i-nr-mes-1 > i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = (i-nr-mes-1 - i-nr-mes-2).

    IF i-nr-mes-1 < i-nr-mes-2 THEN
    ASSIGN i-nr-mes-r = (i-nr-mes-2 - i-nr-mes-1).

    --- Fim do tratamento. ---
    Exemplo: Se informo a seguinte data 01/10/2012 - 01/06/2013.
    i-nr-mes-1 = 10.
    i-nr-mes-2 = 06.
    Porém na comparação no programa ele diz que i-nr-mes-1 é menor do i-nr-mes-2.
    Não estou entendo isso.
    Alguém pode me auxiliar.

    Desde já agradeço a ajuda.
    Att.

    Wellington
  2. Mokwa

    Mokwa Membro Participativo

    Explica oque você quer fazer.
  3. well

    well Sem Pontuação

    Bom dia,

    Preciso ter a diferença dos meses entre as datas.

    Att.
  4. Mokwa

    Mokwa Membro Participativo

    Veja se essa função não te ajuda:

    Exemplo:

    Código:
    DEFINE VARIABLE datInicial AS DATE NO-UNDO INIT 07/01/2013.
    DEFINE VARIABLE datFinal   AS DATE NO-UNDO INIT 08/01/2013.
    
    MESSAGE INTERVAL (datFinal, datInicial, 'MONTH')
        VIEW-AS ALERT-BOX INFO BUTTONS OK.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página