For each em Todo Banco de Dados

Discussão em 'Progress 4GL' iniciado por edevil, Maio 6, 2015.

  1. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    sim, não precisaria usar a query dinamica, já que a _field tem a tipagem dos dados.

    Robert, se vc far um for each e o campo que vc quer alterar está na chave primaria, se o dado que vc mudar, pela ordem alfabetica ou numerica te joga pro fim da tabela, vc vai passar pelo registro novamente, se jogar pro inicio, não te incomoda, nesses casos é mais interessante vc usar um indice alternativo que não use o campo que vc vai alterar.
  2. rlfritz

    rlfritz Membro Ativo

    Legal Richard! essa eu não sabia..
    fiz um programinha para testar isso e funciona da forma como você comentou:
    Código:
    DEFINE TEMP-TABLE tt-teste NO-UNDO
        FIELD campo AS CHAR
        INDEX tt-teste AS PRIMARY UNIQUE campo.
    
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "A".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "B".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "C".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "D".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "E".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "F".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "G".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "H".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "I".
    CREATE tt-teste.
    ASSIGN tt-teste.campo = "J".
    
    OUTPUT TO c:\temp\teste-index.txt.
                                     
    FOR EACH tt-teste USE-INDEX tt-teste:
    
        PUT UNFORMATTED tt-teste.campo SKIP.
    
        IF tt-teste.campo = "C" THEN
            ASSIGN tt-teste.campo = "HH".
    
    END.
    
    OUTPUT CLOSE.
    
    a Saída foi:
    A
    B
    C
    D
    E
    F
    G
    H
    HH
    I
    J

    Eu imaginava que o for each seguia o índice... ou seja, quando chegasse no "end" ocorreria um salto para o próximo registro após o último registro lido... pensei que o resultado seria:
    A
    B
    C
    I
    J

Compartilhe esta Página