In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Ayuda en TRY CATCH END

Foro de Xailer profesional en español
Responder
Avatar de Usuario
gerencia
Mensajes: 282
Registrado: Sab Jun 20, 2009 6:01 pm

Ayuda en TRY CATCH END

Mensaje por gerencia »

Hola amigos,
Necesito una pequeña ayuda con el uso del TRY CATH END.
Estoy intentando interceptar el error de un proceso de grabado en Mysql,
pero el el error que detecto no memuestra la linea real que origino el
error, el error me muestra que es la linea 410, pero esta es el llamado
a la función que guarda el error.
Anexo unpequeño ejemplo .
Gracias por su colaboración
TRY
Application:oMainForm:oConect:BeginTrans()
IF !::Add_Movi(cCobte)
Throw(ErrorNew( "No puedo Insertar Movimiento ", 0, 0, "Insertando
Movimiento de Entrada Equipos" ) )
ENDIF
CATCH oErr
Application:oMainForm:oConect:RollBackTrans()
cErrorlog:=Genero_error("Error Grabando Entrada...",oErr)
END
FUNCTION Genero_error( cTitulo, oErr, oConect )
LOCAL cErrorlog
LOCAL n
LOCAL cText :=""
LOCAL CcText:=""
DEFAULT cTitulo TO ""
DEFAULT oConect TO ""
n:= 1
WHILE ! Empty( ProcName( ++n ) )
CcText:= "Called from " + ProcName( n ) + "(" + hb_ntos(
ProcLine( n ) ) + ")" + CRLF
cText += CcText
ENDDO
cErrorlog := cTitulo + CRLF + ;
"Subsistema : " + oErr:subsystem + CRLF + ;
"Codigo Error : " + hb_ntos(oErr:subcode) + CRLF + ;
"Descripción : " + oErr:Description + CRLF + ;
"Operación : " + oErr:Operation + CRLF + ;
"Argumento : " + CRLF + ;
"Modulo : " + Procname(1) + CRLF + ;
"Linea : " + hb_ntos(ProcLine(1)) + CRLF + ;
"Procedimiento: " + cText + CRLF + ;
IF( !Empty( oConect ), "SQL Error : " + '[ ' + AllTrim(
Str(oConect:nlasterror ) ) + ']' + oConect:cLastError, "" )
AU_Save_Sql_Log( cErrorlog )
RETURN( cErrorlog )
TEXTO DEL ERROR MOSTRADO
-----------------------------------------------
Fecha :2013.04.22
Hora :22:43:05
Usuario :Jose David
Error Grabando Entrada...
Subsistema : BASE
Codigo Error : 1005
..F.
Descripción : Message or field name not found
Operación : TSQLQuery:A
Argumento :
Modulo : TENTRADA:GUARDAR
Linea : 410
Procedimiento: Called from TTOOLBUTTON:ONCLICK(0)
Called from (b)XTOOLBUTTON(41)
Called from TTOOLBUTTON:CLICK(0)
Called from TTOOLBAR:COMMAND(402)
Called from TREBAR:WMCOMMAND(281)
Called from RUNFORM(0)
Called from TAPPLICATION:RUN(283)
Called from MAIN(68)
--
José David Angulo
*José**David Angulo Urzola.*
*Auditoria y Sistemas Ltda.*
jose.angulo@auditoriaysistemas.com <mailto:Gerencia@microexpressltda.com>
*Tel. (57) 5-6643022 -- 6644555*
*Cartagena -- Colombia*
--
Jose David Angulo Urzola
Auditoria y Sistemas Ltda.
Cartagena-Colombia
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Ayuda en TRY CATCH END

Mensaje por ignacio »

Hola,
Simplemente:
oMySqlDS:lAbortOnErrors := .t.

TRY
...
CATCH
aErrorsInfo := oMySqlDS:GetErrors()
END
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder