TDolphin - Como capturo el error que se produjo?

TDolphin - Como capturo el error que se produjo?

Postby goosfancito » Fri Feb 14, 2014 8:35 am

Hola.
Quiero capturar el error que se produce.

Code: Select all  Expand view
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.", ".:Error:.")
     
      // 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/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: TDolphin - Como capturo el error que se produjo?

Postby Biel EA6DD » Fri Feb 14, 2014 9: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: Select all  Expand view

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/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Re: TDolphin - Como capturo el error que se produjo?

Postby goosfancito » Fri Feb 14, 2014 1:20 pm

gracias
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: TDolphin - Como capturo el error que se produjo?

Postby MarioG » Fri Feb 14, 2014 3: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: Select all  Expand view
  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
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: TDolphin - Como capturo el error que se produjo?

Postby joseluisysturiz » Sat Feb 15, 2014 3:49 am

Yo lo hago asi...saludos... :shock:

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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: sysctrl2 and 7 guests