Duvida Ultimo dia do mês

Discussão em 'Progress 4GL' iniciado por ueluis, Junho 16, 2016.

  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Meu caro, desculpe estar as vezes querendo ensinar o padre a rezar a missa, só a titulo de sugestão .....
    Código:
        define temp-table ttDatas no-undo
            field dataInicio  as date
            field dataTermino as date
            index principal dataInicio.
    
        define variable dataInicial as date no-undo.
        define variable dataFinal   as date no-undo.
        define variable dataTemp    as date no-undo.
    
    
        assign dataInicial = 11/01/2015
               dataFinal   = 03/31/2016.
    
        /* gerando intervalos de datas */
    
        empty temp-table ttDatas.
        assign dataTemp = dataInicial.
        repeat:
            if dataTemp > dataFinal then leave.
            create ttDatas.
            assign ttDatas.dataInicio  = dataTemp
                   ttDatas.dataTermino = date(month(dataTemp),28,year(dataTemp)) + 5
                   ttDatas.dataTermino = date(month(ttDatas.dataTermino),1,year(ttDatas.dataTermino)) - 1.
            assign dataTemp = ttDatas.dataTermino + 1.
        end.
    
        for each ttDatas no-lock:
            for each movto-estoq no-lock
                where movto-estoq.dt-trans >= ttDatas.dataInicio
                  and movto-estoq.dt-trans <= ttDatas.datTermino:
                .....
            end.
        end.
    
    Assim vc não precisa se preocupar com continhas de meses, dias e anos, o proprio progress já faz pra vc.
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    tá aparecendo uns códigos cabulosos neste post, ahuahauhauah
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    mas esses que são bons, eu esqueci de por antes assign dataTemp = ttDatas.dataTermino + 1, if ttDatas.dataTermino > dataFinal then assign ttDatas.dataTermino = dataFinal.

    assim se por datas quebradas ele vai entender também.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Me desculpem, me empolguei, pode fazer o seu codigo assim também ......
    Código:
    define variable dataInicial as date no-undo.
    define variable dataFinal   as date no-undo.
    
    
    assign dataInicial = 11/01/2015
           dataFinal   = 03/31/2016.
    
    for each movto-estoq no-lock
        where movto-estoq.dt-trans >= dataInicial
          and movto-estoq.dt-trans <= dataFinal
        break
           by year(movto-estoq.dt-trans)
           by month(movto-estoq.dt-trans):
    
        if first-of(month(movto-estoq.dt-trans)) then do:
            /* Abre Arquivo de log */
            output to value(session:temp-dir + 'LOG_' + string(year(movto-estoq.dt-trans),'9999') + string(month(movto-estoq.dt-trans),'99')).
        end.
    
        /* grava o log */
       
    
        if last-of(month(movto-estoq.dt-trans)) then do:
            /* fecha arquivo de log */
            output close.
        end.
    end.
    

Compartilhe esta Página