Begin Transaction … End Transaction

Exemplo de utilização de controle de transação no AdvPL, podendo utilizar “rollback” nas alterações feitas.

Exemplo da Rotina:

Begin Transaction
	//Tratativas de inclusão, alteração, disarm
End Transaction

Exemplo 1- Exemplo de criação de registro no cadastro de Produtos, perguntando se deseja cancelar:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zTeste
Função de Teste
@type function
@author Terminal de Informação
@since 13/11/2016
@version 1.0
    @example
    u_zTeste()
/*/

User Function zTeste()
	Local aArea    := GetArea()
	Local aAreaB1  := SB1->(GetArea())

	//Iniciando controle de transações
	Begin Transaction
		RecLock('SB1', .T.)
			B1_COD  := dToS(dDataBase)+StrTran(Time(), ':', '')
			B1_DESC := "Teste"
		SB1->(MsUnlock())

		//Se a pergunta foi confirmada, cancela os lançamentos na transação
		If MsgYesNo("Deseja cancelar e disarmar a transação?", "Atenção")
			DisarmTransaction()
		EndIf

	//Finalizando controle de transações
	End Transaction

	RestArea(aAreaB1)
	RestArea(aArea)
Return

Exemplo em Vídeo:

Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.

Observações:

– Caso tenha dúvidas ou problemas com os exemplos, entre em contato;
– Se tiver sugestões de rotinas, pode entrar em contato;

Referências:

TDN