Bom dia, GetAutoGRLog() esta vazio, mas o MostraErro() vem com informações, Já viram o problema ou sabe como resolver?
Bom dia, GetAutoGRLog() esta vazio, mas o MostraErro() vem com informações, Já viram o problema ou sabe como resolver?
Olá Thiago. Para que a função GetAutoGRLog funcione, é preciso que os erros estejam em Array. Você faz isso declarando antes do ExecAuto esta variável:
private lAutoErrNoFile:= .T.
Eu costumo usar algo assim:
Local cDetalhe:= ""
Private lMsErroAuto := .F.
Private lMsHelpAuto := .F.
Private lAutoErrNoFile:= .T.
aDados:= FWVetByDic( aDados, "SA1", /*lItens*/, /*nCpoPos*/ )
MsExecAuto( {|x,y| MATA030(x,y) }, aDados, If(lIncCli, 3, 4) )
If lMsErroAuto
cLog:= "Erro ao cadastrar/alterar o cliente " + cCodCli + "-" + cLojCli + ": " + CRLF
aEval(GetAutoGrLog(), {|x| cDetalhe+= x + CRLF })
lRet:= .F.
EndIf
aLog := GetAutoGRLog() cErro := "" For nY := 1 To Len(aLog) conout("entrou na geracao do log") If !Empty(cErro) cErro += CRLF EndIf cErro += aLog[nY] conout(cErro) MemoWrite("C:\TEMP\", aLog[nY]) Next nY*/
— Tiago Carvalho Campos 03 de Nov de 2020Estou tratando, mas a rotina retorna o array vazio, mesmo existindo o erro para o execauto do fina050
— Tiago Carvalho Campos 03 de Nov de 2020Mesmo colocando o lAutoErrNoFile:= .T.
antes do ExecAuto?
A MostraErro só tem dados quando esta variável está .F.
(comportamento padrão), já a GetAutoGrLog() só retorna alguma coisa quando está .T.
.
As duas se anulam. Tem que cuidar também pra não ter algum outro PE ou função padrão mesmo mexendo nessa variável durante o execauto, ou mesmo chamando uma das funções durante o processo. A MostraErro e a GetAutoGrLog não só exibem o erro, como também limpam o cache do mesmo, por isso não tem como usar em conjunto, nem usar duas vezes elas na mesma execução.
— Thiago Gonçalves Mota 03 de Nov de 2020Já peguei casos de ponto de entrada que chama um outro execauto abaixo, e daí desconfigura as variáveis e limpa os caches destas rotinas de erro.
— Thiago Gonçalves Mota 03 de Nov de 2020