Duvida Paginação eficiente

Discussão em 'Progress 4GL' iniciado por rafael.andrade, Abril 10, 2015.

  1. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    Bom dia,

    Seguinte, muitos programas que utilizamos estão ficando lentos e gerando muito IO por causa da quantidade excessiva de registros que carrega nos browsers, apesar de todos índices usados e tudo mais. Coisa de 15 milhões ou mais de registros.

    Estou tentando fazer paginação para otimizar os Browsers.

    Os "buffer object handle" possuem "FIND-FIRST" e "FIND-LAST" mas não possui "FIND-NEXT" nem "FIND-PREV" e o "NEXT-SIBLING" e "PREV-SIBLING" não funcionam como os citados anteriormente.

    Depois vi uma forma usando variável QUERY, tipo:
    Código:
    DEFINE QUERY cust-order FOR Customer, Order.
    OPEN QUERY cust-order FOR EACH Customer, EACH Order OF Customer.
    GET FIRST cust-order.
    DO WHILE AVAILABLE Customer:
     DISPLAY Customer.CustNum Customer.Name
    WITH FRAME cust-info.
    DISPLAY Order WITH FRAME order-info SIDE-LABELS.
    PAUSE.
    GET NEXT cust-order.
    END.
    
    Pergunta: Como fica o código, uma vez que passei para a segunda página, ao voltar usando o ROWID do primeiro registro mantendo a cláusula WHERE ?

    Abraço

    Rafael
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Eu criaria um campo indice, contaria quantos itens eu gostaria de ter em cada pagina, depois teria 2 botões de avancar e voltar pagina, onde eu somaria e diminuiria 1 do indice, e no browser mandar listar somente os itens daquele indice.
  3. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

    isso não resolve porque a cláusula WHERE pode ser modificada pelo usuário...mas obrigado pelo retorno

Compartilhe esta Página