Ajuda Busca de Dados

Discussão em 'Comandos Básicos' iniciado por ahsantiago, Novembro 23, 2011.

  1. ahsantiago

    ahsantiago Sem Pontuação

    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.
  2. Rodrigo Rossetto

    Rodrigo Rossetto Membro Participativo

    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.
    
    

Compartilhe esta Página