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*
--
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.
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
Ayuda en TRY CATCH END
Jose David Angulo Urzola
Auditoria y Sistemas Ltda.
Cartagena-Colombia
Auditoria y Sistemas Ltda.
Cartagena-Colombia
- ignacio
- Site Admin
- Mensajes: 9253
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Ayuda en TRY CATCH END
Hola,
Simplemente:
oMySqlDS:lAbortOnErrors := .t.
TRY
...
CATCH
aErrorsInfo := oMySqlDS:GetErrors()
END
Simplemente:
oMySqlDS:lAbortOnErrors := .t.
TRY
...
CATCH
aErrorsInfo := oMySqlDS:GetErrors()
END