FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour TDolphin - Como capturo el error que se produjo?
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
TDolphin - Como capturo el error que se produjo?
Posted: Fri Feb 14, 2014 08:35 AM
Hola.
Quiero capturar el error que se produce.

Code (fw): Select all Collapse
 TRY
聽 聽 聽 connect ::oCnx HOST cHost;
聽 聽 聽 聽 聽USER "";
聽 聽 聽 聽 聽PASSWORD "";
聽 聽 聽 聽 聽PORT "";
聽 聽 聽 聽 聽FLAGS 0;
聽 聽 聽 聽 聽DATABASE ""
聽 聽CATCH oErr
聽 聽 聽 ::oCnx:= NIL
聽 聽 聽 MsgStop("Error al acceder a la base de datos. " + Chr(13) + "No se puede continuar.", ".:.")
      
      // Aca quiero que me muestre cual fue el error, si mal la contrase帽a si no existe la base de datos. etc. como hago esto?

聽 聽END



gracias.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Re: TDolphin - Como capturo el error que se produjo?
Posted: Fri Feb 14, 2014 09:35 AM
Entiendo po el c贸digo que ::oCnx es un data de una clase tuya que contendra la referencia al servidor, imagino.
Puedes a帽adir un gestor de errrores personalizado, y en funci贸n del c贸digo de error MySql visualizar el mensaje que corresponda.
Code (fw): Select all Collapse
connect ::oCnx HOST cHost;
聽 聽 聽 聽 聽USER "";
聽 聽 聽 聽 聽PASSWORD "";
聽 聽 聽 聽 聽PORT "";
聽 聽 聽 聽 聽FLAGS 0;
聽 聽 聽 聽 聽DATABASE ""

聽::oCnx:bOnError:={|oServer,nError,lInternal,cExtra| CtrlError( oServer, nError, lInternal, cExtra )}
...
//---------------------------------------------------------------
STATIC FUNCTION CtrlError( oServer, nError, lInternal, cExtra )
聽 聽LOCAL cText := ""
聽 聽LOCAL oError
聽 聽hb_Default( @cExtra, "")

聽 聽SWITCH nError
聽 聽CASE 1062
聽 聽 聽 MsgAlert( 'Clave Primaria duplicada, registros no se ha grabado '+CRLF+;
聽 聽 聽 聽 聽 聽 聽 聽'Error '+Trim(Str(nError))+CRLF+;
聽 聽 聽 聽 聽 聽 聽 聽 If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " "+ CRLF + cExtra )
聽 聽 聽 EXIT
聽 聽CASE 1451
...
聽 聽OTHERWISE
聽 聽 聽 oError := ErrorNew()
聽 聽 聽 oError:SubSystem 聽 = If( lInternal, "TDOLPHIN", "MYSQL" )
聽 聽 聽 oError:SubCode 聽 聽 = nError
聽 聽 聽 oError:Severity 聽 聽= 2
聽 聽 聽 oError:Description = If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " " + cExtra

聽 聽 聽 Eval( ErrorBlock(), oError )
聽 聽END

RETURN NIL

Busca en la documentaci贸n de MySql el c贸digo de error que quieres monitorizar y agregalo al siwtch. Tambi茅n debes decidir si generas error, o por el contrario puede seguir la ejecuci贸n.
Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: TDolphin - Como capturo el error que se produjo?
Posted: Fri Feb 14, 2014 01:20 PM

gracias

FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: TDolphin - Como capturo el error que se produjo?
Posted: Fri Feb 14, 2014 03:23 PM
Goosfancito;
TDolphin tiene en el \inclue\dolerr.ch que devuelve el tipo de error (a modo informativo)
Busca entre los samples y vas a ver algo como lo que sigue:
Code (fw): Select all Collapse
 聽 CONNECT ::oSrv HOST 聽 聽 shIni["MARIADB"]["host"] ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 USER 聽 聽 shIni["MARIADB"]["user"] ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 PASSWORD ::oTxt:ReadLine() ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 PORT 聽 聽 shIni["MARIADB"]["puerto"] ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 FLAGS 聽 聽0;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ON ERROR nMyErr:= oSelf:InfoError( Self, nError, lInternal )

聽 聽if ( lConecto:= (nMyErr == 0) )
聽 聽 聽 lConecto:= ::ChkDataB( cDataBase )
聽 聽end

::InfoError() pertenece a TDolphin
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: TDolphin - Como capturo el error que se produjo?
Posted: Sat Feb 15, 2014 03:49 AM
Yo lo hago asi...saludos... :-)

TRY
oQry := TDolphinQry():New( cQry, oDatos:oConex )

CATCH oError
MSGSTOP( oError:description() + CRLF + CRLF + ;
"Error Ejecuci贸n de Sentencia en Tabla(piramide_participantes): " + ;
CRLF + CRLF + cQry, oDatos:cTitMsg )

RETURN

END
Dios no est谩 muerto...



Gracias a mi Dios ante todo!

Continue the discussion