Urgente Agilizar consulta For Each

Discussão em 'Progress 4GL' iniciado por brunohrds27, Julho 29, 2014.

  1. brunohrds27

    brunohrds27 Sem Pontuação

    Olá Jeffesson, obrigado pela colaboração!

    Claro que gostaria deste material, meu e-mail é brunohrds27@hotmail.com.

    Um ajudando ao outro, graças a Deus pelos fóruns e a colaboração de seus participantes.
  2. jaisonantoniazzi

    jaisonantoniazzi Membro Ativo

    Segue o exemplo para "Os campos que não são índices e deverão filtrar os registros deverão ir para dentro do for each e você deverá usar next para serem ignorados".

    Usarei a tabela CUSTOMER no banco SPORTS2000, pois tem os índices:

    Table: Customer
    Flags Index Name St Area Cnt Field Name
    ----- ----------------------------- ------- --- ------------------------------
    w Comments 10 1 + Comments
    CountryPost 10 2 + Country
    + PostalCode
    pu CustNum 10 1 + CustNum
    Name 10 1 + Name
    SalesRep 10 1 + SalesRep


    Imagine que você fará uma consulta por NAME (tem índice) e por ADDRESS (não tem índice).
    Ao invés de fazer um for each como este abaixo:

    DEFINE VARIABLE nome LIKE customer.NAME NO-UNDO.
    DEFINE VARIABLE endereco LIKE customer.address NO-UNDO.
    UPDATE nome endereco.
    FOR EACH customer NO-LOCK
    WHERE customer.NAME = nome
    AND customer.address >= endereco:
    DISP customer.custnum customer.NAME customer.address.
    END.


    Você faria um for each como este aqui:
    DEFINE VARIABLE nome LIKE customer.NAME NO-UNDO.
    DEFINE VARIABLE endereco LIKE customer.address NO-UNDO.
    UPDATE nome endereco.
    FOR EACH customer NO-LOCK
    WHERE customer.NAME = nome:

    IF customer.address < endereco THEN
    NEXT.

    DISP customer.custnum customer.NAME customer.address.
    END.

    É somente um exemplo do que comentei, o campo address não é índice então o retirei da cláusula where e o coloquei no bloco do for each.

    Espero que tenha simplificado a tua dúvida.
    Abraço.
    muertebr curtiu isso.
  3. muertebr

    muertebr Membro Participativo

    Bah....
    essa do Jaison nem eu sabia.
  4. Joni

    Joni Membro Participativo

    Outra coisa importante a ser lembrada é que na clausula "WHERE" coloque os campos na mesma ordem em que foram definidos no indice. Isto agiliza a pesquisa.

    Abs,

    Joni

Compartilhe esta Página