ADVPL - Como ler o erro do execauto?

ADVPL - Como ler o erro do execauto?
Author: Eurai
Inclusão: 14/08/2021
Alteração: 11/10/2021

 

 

Neste artigo venho compartilhar algumas formas de leitura dos erros após o execauto.

É de conhecimento geral dos desenvolvedores em ADVPL, que toda a execução do execauto, necessita da declaração da variável lMsErroAuto como private. Após o execauto, se houver algum erro, essa variável ficará com o valor .T.. E com funções auxiliarias, é possível capturar o erro ocorrido.

Há casos que a mesma fica .T. e o erro retornado é em branco, isso ocorre por gatilhos/pontos de entrada sem os devidos tratamentos, utilizando funções que não trabalham com o controle de erro do execauto. Posso citar como exemplo a função Alert/MsgAlert/ETC. 

Vejo demais esses casos, além da falta de tratamento se é execauto, tela, job, etc.

Bem, boraaa ao execAuto.

 

 

Exemplo_01: Este é o mais utilizado. MostraErro()

lMsErroAuto := .F.
MsExecAuto( {|UD,ER,AM| MATA410(UD,ER,AM) }, aSC5, aSC6, 5)
If lMsErroAuto
   //DEU ERRO   MostraErro()
Else
   //Deu SUCESSO
Endif

 

Exemplo_02: Aqui é obtido o nome do log através de função e realizado a leitura do arquivo. MemoRead( Alltrim(NomeAutoLog()) )  

lMsErroAuto := .F.
MsExecAuto( {|UD,ER,AM| MATA410(UD,ER,AM) }, aSC5, aSC6, 5)
If lMsErroAuto
   //DEU ERRO  MemoRead( Alltrim(NomeAutoLog()) )  //Com esse comando é possível obter o erro
Else
   //Deu SUCESSO
Endif

Exemplo_03: A leitura ocorre por array. Neste método é possível realizar tratamentos especificos. A função é a GetAutoGRLog()

Não se esqueça de declarar como a variável private lAutoErrNoFile := .T.

lAutoErrNoFile	:= .T.
lMsErroAuto     := .F.
MsExecAuto( {|UDESENV,UNIVERSO,DESENVOLVEDOR| MATA410(UDESENV,UNIVERSO,DESENVOLVEDOR) }, aSC5, aSC6, 5)
If lMsErroAuto
   //DEU ERRO  aRet := GetAutoGRLog()
Else
   //Deu SUCESSO
Endif

 

 

Complemento:

Caso não tenha tratamentos corretos nas customizações, irá retornar vazio em todos os exemplos. Atuei em casos que até os erros padrões não eram bem tratados (não foi o caso do sigahelp).

Em determinados casos é possível utilizar a função FWGetUltHlp para verificação de erro, a função é utilizado para outros fins, porém porém e porém novamente, não custa tentar unificar com o execauto.

Em complemento a esta função, existe a FwClearHlp para limpeza do help.

 

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎

Um abraço, e até a próxima  

 

 

 

 

 

Esse conteúdo te ajudou? Ajude o canal com doação
Compartilhar
Comentários