Boa tarde.
Problema detectado, mas NÃO resolvido.
Vejamos o código da Função de entrada do ErrorLog:
Código: Selecionar todos
FUNCTION MyErrorFunc( MyObjError )
*
LOCAL cErrorMsg, HtmArch, cText, nn1 := 2
c_LogFile := ""
c_ErrMsg := c_ScrnMsg := ""
*
oErrAntes := ERRORBLOCK( { | objErr | BREAK( objErr ) } )
*
BEGIN SEQUENCE
*
cErrorMsg := MyErrorMessage( MyObjError )
*
RECOVER USING oErr
*
IF oErr <> NIL
lMyError := .T. // Especifica que realmente ocurreu um erro.
c_MsgErr := "Passou pelo RECOVER USING"
cErrorMsg := MyErrorMessage( MyObjError, c_MsgErr )
ENDIF
*
END
*
HtmArch := Html_ErrorLog()
Html_LineText( HtmArch, CRLF + CRLF + '<p class="updated">Date: ' + Dtoc(Date()) + " " + "Time: " + Time() )
Html_LineText( HtmArch, c_ErrMsg + CRLF + "Fim da mensagem de erro.========================== </p>" )
*
cErrorMsg += CRLF + CRLF
*
WHILE ! Empty( ProcName( nn1 ) )
cText := "Called from " + ProcName( nn1 ) + "(" + AllTrim( Str( ProcLine( nn1++ ) ) ) + ")" + CRLF
cErrorMsg += cText
ENDDO
*
Err_Log_Prt( MyObjError ) && Impressão em A4 de Falha Grave.
*
MsgStop( HB_AnsiToOem( c_ScrnMsg ), 'ErrorLog: ' + c_LogFile )
*
Release Window All
*
RETURN .T.
O problema é que a Função grava o erro ocorrido mas a linha abaixo NÃO apresenta a mensagem na tela:
Código: Selecionar todos
MsgStop( HB_AnsiToOem( c_ScrnMsg ), 'ErrorLog: ' + c_LogFile )
A linha abaixo deveria fechar a janela como faz com os outros erros, mas NÃO fecha:
A mensagem de erro "ErrorLog.htm" gravada é:
<p class="updated">Date: 06/06/2015 Time: 14:25:26<BR>
Número do ErrorLog_MG_nnn.txt..: D:\Dev\FATXML\HSJ\BxReq\ERRORLOG_MG_012.txt
Tipo do erro ..................: Erro
Tipo de mensagem ..............: WINOLE
Número do Erro ................: 1007
Descrição do erro .............: ORA-12170: TNS:Ocorreu timeout da conexÒo
(0x80004005)
Nome do arquivo ..............: : Microsoft OLE DB Provider for Oracle
Objeto do Erro ................: OPEN
Área - Select() ...............: 9