Boa tarde Pessoal. Estou com dificuldade em acumular os valores de um for each por item. Na imagem alguns registros se repetem, preciso somar a quantidade destes registros. E mostra-lo item por item sem repetição.
Um exemplo baseado no banco Sports. Voce pode usar ACCUMULATE também (vide help do Progress) Código: DEFINE VARIABLE valor AS DECIMAL. FOR EACH Order-Line BREAK BY Order-Line.Order-Num: FIND Item OF Order-Line NO-LOCK NO-ERROR. IF FIRST-OF(Order-Line.Order-Num) THEN DISPLAY Order-Line.Order-Num. ASSIGN valor = valor + Order-Line.Price. DISPLAY Order-Line.Line-num Order-Line.Item-Num Item.Item-Name WHEN AVAILABLE Item Order-Line.Price. IF LAST-OF(Order-Line.Order-Num) THEN DO: DOWN 1. DISPLAY "--------------" @ Order-Line.Price. DOWN 1. DISPLAY valor @ Order-Line.Price. DOWN 1. ASSIGN valor = 0. END. END.
Boa noite Diego, não tenho acesso a base no momento, mas pelo que lembro, acho que é isso: DEFINE VARIABLE vl-tot-item LIKE item-doc-est.preco-total[1] NO-UNDO. FOR EACH docum-est WHERE docum-est.dt-emis = DATE(01/01/2014) NO-LOCK: ASSIGN vl-tot-item = 0. FOR EACH item-doc-est OF docum-est NO-LOCK: ASSIGN vl-tot-item = vl-tot-item + item-doc-est.preco-total[1].END. DISPLAY docum-est.serie-docto docum-est.cod-emitente docum-est.nro-docto docum-est.esp-docto docum-est.cod-estabel docum-est.dt-emis docum-est.tot-valor vl-tot-item.END. Caso algum campo esteja errado é só ajustar...
Olá Diego boa tarde! Estava de férias, estou voltando ao fórum...é, claro que já resolveu esta questão mas, gostaria de reforaçar a dica do "accumulate" do amigo Agnaldo. Uusar o "accumalate" é muito útil em relatórios, depois que aprendi a usá-lo recomendo sempre que possível. Abaixo um breve exemplo do uso do accumulate. for each "sua-tt" no-lock break by sua-tt.it-codigo: accumulate sua-tt.qtde (total by sua-tt.it-codigo) . if last-of (sua-tt.it-codigo) then do: disp sua-tt.it-codigo column-label "Item" accum total by sua-tt.it-codigo sua-tt.qtde column-label "Total" with stream-io width 200. end. end. É possível assim, ter várias visões sobre o mesmo relatório, se tu quiseres ver o total do item por data de transação, por exemplo, apenas acrescentaria no break "by sua-tt.dt-trans" e, criaria outro accumulate. Enfim...só gostaria de compartilhar como o amigo este comando que acho muito útil. Abraço, Jefferson