Duvida Progress - EMS206 - ACCUM NFs Entrada

Discussão em 'Progress 4GL' iniciado por Rsacoman, Abril 29, 2015.

  1. Rsacoman

    Rsacoman Sem Pontuação

    ola pessoal, estou precisando de um Help no ACCUMULATE.

    Preciso listar as NFs agrupado por cidade totalizando o doc-fiscal.vl-cont-doc.

    Mas dessa forma que eu fiz o ACCUMULATE (TOTAL) ele sempre acumula o valor sempre somando as cidades
    Ex: Cidade A + B + C + D.

    preciso do:
    Valor total da Cidade A,
    Valor total da Cidade B,
    Valor total da Cidade C
    Valor total da Cidade D.


    Código:
    FOR EACH doc-fiscal NO-LOCK
               
        where doc-fiscal.dt-emis-doc >= DATE(02,01,2015)
        AND doc-fiscal.dt-emis-doc <= DATE(02,28,2015)
        AND doc-fiscal.cod-estabel = '202' 
        AND (doc-fiscal.nat-operacao ='1101ca' OR doc-fiscal.nat-operacao = '1101ce') 
        AND doc-fiscal.ind-sit-doc <> 2
        BREAK BY  doc-fiscal.cidade.
       
        FIND FIRST emitente NO-LOCK
            WHERE emitente.cod-emite = doc-fiscal.cod-emite.
         
        ACCUMULATE doc-fiscal.vl-cont-doc (TOTAL BY doc-fiscal.cidade).
        ACCUMULATE (doc-fiscal.vl-cont-doc) (COUNT BY doc-fiscal.cidade).
       
        /* ultima cidade agrupada entao disp na tela */
        IF LAST-OF( doc-fiscal.cidade)  THEN DO:
          DISP  
              doc-fiscal.cidade
              ACCUM TOTAL doc-fiscal.vl-cont-doc 
              ACCUMULATE COUNT doc-fiscal.vl-cont-doc.
        END.
    END.
    
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    eu prefiro criar uma temp-table e ir alimentando ela com os dados que me interessa quebrar, assim não preciso nem me preocupar no for each da tabela em ordenar por algum campo, ficando o for each mais rapido, selecionando um indice de tabela que seja mais rapido e tudo mais.

    Código:
    define temp-table ttCidade no-undo
        field cidade as character
        field valor  as decimal
        index principal cidade.
    
    empty temp-table ttCidade.
    for each doc-fiscal no-lock
        where doc-fiscal.dt-emis-doc >= 02/01/2015
          and doc-fiscal.dt-emis-doc <= 02/28/2015
          and doc-fiscal.cod-estabel  = '202'
          and (doc-fiscal.nat-operacao = '1101ca'
           or  doc-fiscal.nat-operacao = '1101ce')
          and doc-fiscal.ind-sit-doc <> 2:
    
        find first ttCidade
             where ttCidade.cidade = doc-fiscal.cidade
                   no-error.
    
        if not avail ttCidade then do:
            create ttCidade.
            assign ttCidade.cidade = doc-fiscal.cidade
                   ttCidade.valor  = 0.
        end.
    
        assign ttCidade.valor = ttCidade.valor + doc-fiscal.vl-cont-doc.
    end.
    
    for each ttCidade:
        disp ttCidade.
    end.
    
    rhemati e Rsacoman curtiram isso.
  3. Rsacoman

    Rsacoman Sem Pontuação

    o Rapaz, é isso mesmo!

    Obrigado deu certo!
    Poe na conta mais essa!
    rhemati curtiu isso.

Compartilhe esta Página