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