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
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!
Boa noite Eilleen Muito obrigado pelo esclarecimento, agora sei o que eu preciso ajustar no meu programa. Valeu mesmo.