Duvida Exibir apenas os 3 ùltimos registros

Discussão em 'Progress 4GL' iniciado por diego.neves, Janeiro 23, 2014.

  1. diego.neves

    diego.neves Membro Participativo

    Boa tarde
    Gostaria de saber como posso exibir apenas os três ultimos registros de um for each.

    Obrigado
    desde Já.

    Diego
  2. diego.neves

    diego.neves Membro Participativo

    Boa tarde Caros.

    Após quebrar a cabeça consegui utilizando o for each ...algumas variaveis de controle e find last.

    Até Mais.
  3. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caro colega,

    Nao sei como vc conseguiu, mas uma sugestao a mais nunca é demais, veja o codigo abaixo, mostrando os 10 primeiros registros:

  4. lwazevedo

    lwazevedo Membro Ativo

    Olha só, para imprimir os três últimos registros tu pode fazer conforme abaixo é meio tosco mas funciona.

    Código:
    DEF VAR Rc AS INT.
    
    FIND LAST customer NO-LOCK NO-ERROR.
    rc = RECID(customer).
    
    FOR EACH customer WHERE int(recid(customer)) = rc OR
                            int(recid(customer)) = rc - 2 OR
                            int(recid(customer)) = rc - 1 NO-LOCK.
    
        DISP custNum
            RECID(customer).
    END.
    
  5. pedro_lemes

    pedro_lemes Membro Participativo

    Ola, Srs!

    É importante frisar que sempre existem varios caminhos pra se chegar no mesmo objetivo. Todos acima estão certos, com mais ou menos lógica ou esforço. Só é necessário ressaltar, que mostras os ultimos 3 registros depende antes de mais nada, de interpretacao.
    Por exemplo, deseja-se mostrar os ultimos 3 registros CADASTRADOS (ou seja, os 3 mais RECENTES).
    Primeira coisa a se avaliar é o índice default da tabela. Se o indice for por exemplo, CODIGO com ordenação ASCENDENTE, as rotinas acima irão mostrar os 3 primeiros!
    Logo, nas lógicas acima, é necessário ORDERNAR da forma que se necessita. Por exemplo, para saber os ultimos 3 codigos (os mais recentes e consequentemente, os maiores), faz-se em qualquer lógica acima:

    Código:
    FOR EACH customer WHERE ... BY custNum DESC:
    Para ver a diferença é simples. Execute os códigos abaixo e perceba a diferenca:
    1-Sem definição de ordenação, usa default da tabela.

    Código:
    FOR EACH emitente:
        DISP cod-emitente.
    END.
    2-Com definição de ordenação por código, do maior pro menor (BY e DESC).
    Código:
    FOR EACH emitente BY cod-emitente DESC:
        DISP cod-emitente.
    END.
    Dai, só aplicar uma das lógicas acima ou de qualquer outra, que atinja o mesmo objetivo.

    Abs!

    Comunidade Progress Vale do Paraiba, Sul de MG e Sul Fluminense
    don.junior curtiu isso.

Compartilhe esta Página