1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Copiar Registro

Discussão em 'Progress 4GL' iniciado por coliveira, Janeiro 26, 2009.

  1. coliveira

    coliveira Sem Pontuação

    Pessoal alguem conhece uma maneira rapida de copiar o registro da tabela pra ela mesma, alterando apenas um campo ?
  2. Rodrigo Rossetto

    Rodrigo Rossetto Membro Participativo

    Olá,
    Existe o buffer-copy, mas teria que utilizar uma temp-table como auxiliar.

    DEFINE TEMP-TABLE tt-cliente LIKE cliente.

    FIND cliente NO-LOCK WHERE cliente.cdn_cliente = 1.
    BUFFER-COPY cliente TO tt-cliente.

    <<laço>>
    CREATE cliente.
    BUFFER-COPY tt-cliente EXCEPT cdn_cliente TO cliente ASSIGN cliente.cdn_cliente = i.
    <<fim-laço>>

    Dessa forma deixa claro o código, porém é necessário verificar utilizando o ETIME.

    At.,
    Rodrigo
  3. FernandaSantos

    FernandaSantos Membro Participativo

    Só complementando, podemos usar o BUFFER-COPY também para duas tabelas do mesmo_banco/bancos_diferentes, abaixo um exemplo:

    DEFINE BUFFER b-ext-per-custo FOR ext-per-custo .
    FOR EACH ext-per-custo WHERE ext-per-custo.cc-codigo = c-custo-ini NO-LOCK :

    FIND FIRST b-ext-per-custo SHARE-LOCK WHERE b-ext-per-custo.cc-codigo = c-custo-fim AND
    b-ext-per-custo.periodo = ext-per-custo.periodo AND
    b-ext-per-custo.mo-codigo = ext-per-custo.mo-codigo NO-ERROR.

    IF NOT AVAIL b-ext-per-custo THEN
    DO:
    CREATE b-ext-per-custo.
    ASSIGN b-ext-per-custo.cc-codigo = c-custo-fim .

    BUFFER-COPY ext-per-custo EXCEPT cc-codigo TO b-ext-per-custo.
    END.
    ELSE
    DO:
    ASSIGN b-ext-per-custo.mo-codigo = ext-per-custo.mo-codigo
    b-ext-per-custo.periodo = ext-per-custo.periodo
    b-ext-per-custo.char-1 = ext-per-custo.char-1
    b-ext-per-custo.char-2 = ext-per-custo.char-2
    b-ext-per-custo.dec-1 = ext-per-custo.dec-1
    b-ext-per-custo.dec-2 = ext-per-custo.dec-2
    b-ext-per-custo.int-1 = ext-per-custo.int-1
    b-ext-per-custo.int-2 = ext-per-custo.int-2
    b-ext-per-custo.log-1 = ext-per-custo.log-1
    b-ext-per-custo.log-2 = ext-per-custo.log-2
    b-ext-per-custo.data-1 = ext-per-custo.data-1
    b-ext-per-custo.data-2 = ext-per-custo.data-2
    b-ext-per-custo.check-sum = ext-per-custo.check-sum .

    REPEAT i-cont = 1 TO 6:

    ASSIGN b-ext-per-custo.custo-medio[i-cont] = ext-per-custo.custo-medio[i-cont]
    b-ext-per-custo.custo-prev[i-cont] = ext-per-custo.custo-prev[i-cont]
    b-ext-per-custo.custo-total[i-cont] = ext-per-custo.custo-total[i-cont]
    b-ext-per-custo.custo-pad[i-cont] = ext-per-custo.custo-pad[i-cont] .
    END.
    END.
    END.


    Abb,

    Fernanda

Compartilhe esta Página