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

Como usar o DO TRANSACTION em um rp.p

Discussão em 'Progress 4GL' iniciado por ds201, Novembro 18, 2014.

  1. ds201

    ds201 Membro Participativo

    Boa noite

    Tenho um programa RP.p que usa o conceito de transação, mas eu fico com a impressão que há algo errado com o meu código.

    É algo bem simples:

    do transation:
    for each...
    create...
    assign...
    end.

    outros blocos for each com alteração nos registros.
    ...
    end /*transation*/

    Neste exemplo o primeiro for each cria um registro que viola a regra de que o registro deve ser único.
    O esperado e que tudo que esta dentro do "do transation" seja desfeito.
    Mas nem sempre funciona.

    Obrigado
  2. Eilleen

    Eilleen Membro Ativo

    Boa tarde..

    A questão é que em Progress não existe sub-transação, é sempre uma transação única.
    Blocos FOR EACH por si só são transações, então teoricamente cada bloco é executado como uma transação separada.
    Para agrupar em uma única transação é que usa-se o DO TRANSACTION, porém você precisa especificar qual é a ação a ser executada em caso de erro. Para o seu exemplo, ficaria assim:


    DO TRANSACTION ON ERROR UNDO, LEAVE:

    for each...
    create...
    assign...
    end.

    outros blocos for each com alteração nos registros.
    ...

    END.

    Se isso não resolver, você pode utilizar o arquivo debug do compilador (gravado no caminho configurado na opção Options do Application Compiler), ele gera para o programa todo onde começa e termina cada transação.

    Espero ter ajudado!

    :)
    renato.schlogel curtiu isso.
  3. ds201

    ds201 Membro Participativo

    Boa noite Eilleen

    Muito obrigado pelo esclarecimento, agora sei o que eu preciso ajustar no meu programa.

    Valeu mesmo.
  4. Eilleen

    Eilleen Membro Ativo

    Imagina! Fico feliz em ajudar ;)

Compartilhe esta Página