Bom dia Pessoal. Sou novo no fórum, e estou a pouco tempo trabalhando com Progress, no ambiente Datasul. Acontece que foi me solicitado um relatório com vários dados diferentes, dentro do Banco de Dados. Assim sendo fiz todos os parâmetros possíveis para que o mesmo fosse gerado. Vou dar uma esplanada para poder explicar o tal relatório. Pessoal, o relatório é composto por dados de duas tabelas diferentes, eu faço um "FOR EACH" na tabela principal e depois eu faço um concatenamento com um "FIND" na segunda tabela, acontece que há dados comuns nas tabelas, que possibilitam tal concatenamento, dentre esses dados esta o "Documento". Dentro de cada documento há vários dados que são chamados de "Insumos" que vem da segunda tabela. E é ai que esta meu problema. Quando o relatório é gerado os dados de "Insumos" saem errados, puxando somente o primeiro ou o ultimo dado sendo que deveria trazer todos. Segue o pedaço do programa que estou desenvolvendo. Tentei ser o mais sucinto possível. for each moviproc where moviproc.cd-unidade >= cd-uni-ini and moviproc.cd-unidade <= cd-uni-fim and moviproc.cd-prestador >= cd-prest-ini and moviproc.cd-prestador <= cd-prest-fim and moviproc.dt-anoref = ano and moviproc.nr-perref = periodo no-lock: find mov-insu where mov-insu.cd-prestador = moviproc.cd-prestador and mov-insu.cd-unidade = moviproc.cd-unidade and mov-insu.dt-anoref = moviproc.dt-anoref and mov-insu.nr-perref = moviproc.nr-perref no-lock. if not avail mov-insu then next. Aguardo contato.
Prezado, Você pode utilizar um FOR EACH dentro de outro sem problemas e se a chave estiver certinha entre as tabelas usar o OF. Código: FOR EACH nota-fiscal NO-LOCK: FOR EACH it-nota-fisc NO-LOCK OF nota-fiscal: END. END.