TDolphin - bOnError

Post Reply
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

TDolphin - bOnError

Post by MarioG »

Daniel;
hago lo siguiente:

Code: Select all

   CONNECT oServer HOST     shIni["MARIADB"]["host"] ;
                   USER     shIni["MARIADB"]["user"] ;
                   PASSWORD shIni["MARIADB"]["pase"] ;
                   PORT     shIni["MARIADB"]["puerto"] ;
                   FLAGS    0;
                   DATABASE shIni["MARIADB"]["database"] ;
                   ON ERROR MiError( oServer, nError, lInternal )

   return( nil )

PROCEDURE MiError( oServer, nError, lInternal )
   LOCAL cText := ""

   cText += "Error from Custom Error Message" + CRLF
   cText += "================================" + CRLF
   cText += oServer:ErrorTxt() + CRLF
   cText += "ERROR No: " + Str( nError ) + CRLF
   cText += "Internal: " + If( lInternal, "Yes", "No" ) + CRLF

   ? cText + CRLF
 
que estoy haciendo mal?
porque en MiError() oServer es nil, en consecuencia me da error al ejecutar la sentencia oServer:ErrorTxt()
tambien pregunto: debo pasar lInternal, como .T. o .F. o solo mencionar la variable? y el manejdor me dice si el error es "MYSQL" o "TDOLPHIN" ?

gracias por tu tiempo
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: TDolphin - bOnError

Post by Daniel Garcia-Gil »

Hola
MarioG wrote:porque en MiError() oServer es nil, en consecuencia me da error al ejecutar la sentencia oServer:ErrorTxt()
en esta parte NO debes enviar oServer porque para el momento que se construye la conexion y se crea el codeblock bOnError oServer es NIL...
ON ERROR MiError( oServer, nError, lInternal )

si revisas tdolphin.ch veras que se debe usar es Self para este caso

ON ERROR MiError( Self, nError, lInternal )

Self es el objeto TDolphinSrv...
MarioG wrote:tambien pregunto: debo pasar lInternal, como .T. o .F. o solo mencionar la variable? y el manejdor me dice si el error es "MYSQL" o "TDOLPHIN" ?
extendiendo un poco mas sobre el caso anterior, cuando usas el comando xbase CONNECT (de tdolphin.ch) este envia 4 parametros al codeblock bOnError self, nError, lInternal, cExtra
Self = el objeto TDolphinSrv
nError = error devuelto por la clase, que podria ser un error de MySql o de programacion (error del programador)
lInternal = si el error es interno (error del programador) devuelve .T. de loc ontrario es un error devuelto por MySql
cExtra = es el ultimo query generado cuando se usa el metodo MultiQuery

estas son variables que el programador NO asigna son enviadas por la misma clase TDolphinSrv al codeblock bOnError
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: TDolphin - bOnError

Post by MarioG »

gracias... seguimos aprendiendo :wink:
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
jbrita
Posts: 425
Joined: Mon Jan 16, 2006 3:42 pm

Re: TDolphin - bOnError

Post by jbrita »

Quien a probado ON ERROR de la Tdolphin y como ver el tipo de error

Saludos
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: TDolphin - bOnError

Post by joseluisysturiz »

jbrita wrote:Quien a probado ON ERROR de la Tdolphin y como ver el tipo de error

Saludos
Saludos, espero te sirva, los parametros entre comillas con inventos mios...gracias... :shock:

Code: Select all

ShowError( oError, "ma_bancos-tbl_bancos", "ma_bancos.prg" )

FUNCTION ShowError( oError, cFuncion, cPrg, cTabla, cSql )

   DEFAULT cFuncion := "No definida"
   DEFAULT cPrg     := "PRG"
   DEFAULT cTabla   := "Nombre_Tabla"
   DEFAULT cSql     := "Sin Sql"

   MsgInfo( " Descripción: " + oError:Description + CRLF + CRLF +;
            "       Tabla: " + cTabla + CRLF +; // 28/02/2016
            "  En Funcion: " + cFuncion + CRLF +;
            "    Programa: " + cPrg + CRLF +;
            "    Sub Code: " + AllTrim( STR( oError:SubCode ) ) + CRLF +;
            "    Severity: " + AllTrim( STR( oError:Severity ) ) + CRLF +;
            "   SubSystem: " + oError:SubSystem + CRLF +;
            "   Operation: " + oError:SubSystem + CRLF + CRLF +;
            "   Sql-Query: " + cSql , oDatos:cTitMsg )

RETURN NIL


 
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Re: TDolphin - bOnError

Post by Biel EA6DD »

Code: Select all

...
oServer: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 '+hb_ntos(nError)+CRLF+;
               If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " "+ CRLF + cExtra,ProcName(5) )
      EXIT
   CASE 1205
      MsgAlert('Tiempo de espera para bloqueo superado, datos no se han grabado.'+CRLF+;
               ' Reintentelo dentro de un rato.'+CRLF+;
               'Error '+Trim(Str(nError))+CRLF+;
               If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " "+ CRLF + cExtra,ProcName(5) )
      EXIT
   CASE 1451
      MsgAlert('No puede eleminarse el registro'+CRLF+;
               'Otras tablas hacen referencia a este registro'+CRLF+;
               'Error '+Trim(Str(nError))+CRLF+;
               If( lInternal, "Internal Error:" + DOL_GETERROTEXT( nError ) , oServer:ErrorTxt() ) + " "+ CRLF + cExtra,ProcName(5) )
      EXIT
   CASE ... /*Más errores que queramos controlar*/
...
   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

 
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
jbrita
Posts: 425
Joined: Mon Jan 16, 2006 3:42 pm

Re: TDolphin - bOnError

Post by jbrita »

Gracias por su ayuda, pero el problema que tengo que hay ocaciones se me bloquea una tabla "PARAMETROS" que tiene 2 registros y la unica manera de desbloquearla es comunicarse con soprte del hosting y ellos la pueden desbloquearla, ese es mi problema por ando ddetras de algo para saber porque ocurre eso

saludos
Post Reply