BOm dia Galera... Tudo bem? Tô fazendo um relatório bem simples aqui, porem estou com um pequeno problema. Quero que apareça da tabela recebimento, o valor total de cada fornecedor, dentro da seleção informada. Não já consegui fazer com que apareça apenas o primeiro registro do fornecedor, porem a soma não me aparece. O código está abaixo, caso alguem consiga, ficarei agradecido Código: FOR EACH recebimento NO-LOCK WHERE recebimento.data-movto >= tt-param.d-ini-entrada AND recebimento.data-movto <= tt-param.d-fim-entrada AND recebimento.cod-emitente >= tt-param.i-ini-emitente AND recebimento.cod-emitente <= tt-param.i-fim-emitente BREAK BY recebimento.cod-emitente: RUN pi-acompanhar IN h-acomp ('Notas Fiscais: ' + STRING(recebimento.numero-nota)). FIND FIRST emitente NO-LOCK WHERE emitente.cod-emitente = recebimento.cod-emitente NO-ERROR. ASSIGN total-item = recebimento.preco-unit * recebimento.qtd-rec-forn total-fornec = total-fornec + total-item. IF FIRST-OF (recebimento.cod-emitente) THEN DO: PUT STREAM str-rp recebimento.cod-emitente SPACE emitente.nome-abrev SPACE total-fornec SKIP. ASSIGN total-fornec = 0 total-item = 0. END. END. run pi-finalizar in h-acomp.
Saudações... Troque o first-of por last-of, que dará certo. Se quiser melhorar mais ainda, utilize a função ACCUM e ACCUMULATE, aí nem precisa criar variaveis para totalizar, fazer a soma e ficar zerando a variavel. Ficaria +/- assim: Código: FOR EACH ... ACCUMULATE recebimento.preco-unit * recebimento.qtd-rec-forn (SUB-TOTAL BY recebimento.cod-emitente). IF LAST-OF(recebimento.cod-emitente) THEN DO: PUT STREAM str-rp . . ACCUM SUB-TOTAL BY recebimento.cod-emitente recebimento.preco-unit * recebimento.qtd-rec-forn SKIP. END. END.