Captura y manejo de errores de mySQL en Visual Foxpro

2,628 views
Skip to first unread message

Pedro Monsalve Valera

unread,
Apr 17, 2013, 4:04:52 PM4/17/13
to publice...@googlegroups.com
Buenas tardes, amigos del foro.

Recurro a ustedes para, de ser posible me instruyan sobre la manera de capturar errores de mySQL utilizando Visual FoxPro.

Agradecido de antemano.

--
@PedroMonsalve en Twitter
Maracaibo (Zul), Venezuela.

Irwin Rodriguez

unread,
Apr 17, 2013, 4:10:12 PM4/17/13
to publice...@googlegroups.com
Hola Pedro,

Pues yo los controlo de la siguiente manera:

Primero ejecuto la sentencia SQL a traves de la función SQLEXEC() y el resultado lo almaceno en una variable.

Ejemplo:

RETORNO=SQLEXEC(NHANDLE,"SELECT * FROM TABLA","CURSORNAME")

IF RETORNO>0 &&La consulta se ejecutó sin problemas
    ...
ELSE
   =AERROR(NOMBREARREGLO)
   MESSAGEB("ERROR EN LA CONSULTA"+CHR(13)+NOMBREARREGLO(2))
ENDIF

Eso es todo. Espero que mi humilde código te sirva de algo.

Un saludo desde Vnzla!
--
Ing. Irwin Rodríguez
Consultor Informático
0412-521.06.79
 

Antes de imprimir este documento piense bien si es necesario hacerlo, el árbol que servirá para hacer el papel tardará 7 años en crecer. 

 
NOTA: La información mostrada en este mensaje es de caracter Confidencial y está dirigida unicamente a los contactos señalados en el encabezado; si el lector de este correo no es el destinatario del mismo, se le notifica que cualquier copia o distribución queda totalmente prohibida. Si usted ha recibido este mensaje por error, por favor notifique inmediatamente al remitente por este mismo medio y bórrelo de su sistema.

Carlos Miguel FARIAS

unread,
Apr 17, 2013, 5:08:37 PM4/17/13
to Grupo Fox
Si la función de SPT te da error,
hay un comando en mysql que te devuelve como un cursor, cual es el error acontecido en el SGBD.
Por supuesto, si el error no es por falla en la conexión
No tengo aca a mano el código donde lo hice.
Saludos: Miguel, La Pampa (RA)

Oscar Quiros Coto

unread,
Apr 17, 2013, 5:20:20 PM4/17/13
to publice...@googlegroups.com
Con respecto a la respuesta de Irwin, yo le pongo un control adicional, en el cual evaluo el tipo de error, para ver si amerita reconectar.
Claro, tienes que meterle un poco de logica especial, para intentar de nuevo.

RETORNO=SQLEXEC(NHANDLE,"
SELECT * FROM TABLA","CURSORNAME")

IF RETORNO>0 &&La consulta se ejecutó sin problemas
    ...
ELSE
   =AERROR(NOMBREARREGLO)
            nerr1=2006 &&gona way
            nerr2=2013 &&Lost connection to MySql Server During quiery
            nerr3=2003

            If NOMBREARREGLO(1,5)=nerr1 Or NOMBREARREGLO(1,5)=nerr2 Or NOMBREARREGLO(1,5)=nerr3 Or Isnull(NOMBREARREGLO(1,5))
            *****Perdida de conexion, intentar conectar de nuevo, solo en caso de no haber transaccion
            Endif

 

 MESSAGEB("ERROR EN LA CONSULTA"+CHR(13)+NOMBREARREGLO(2))
ENDIF

Pedro Monsalve Valera

unread,
Apr 17, 2013, 5:34:41 PM4/17/13
to publice...@googlegroups.com
Agradezco todas las respuestas. Ya resolví el problema que tenia. Tema solucionado con las respuestas ofrecidas.

Arnaldo Toledano

unread,
Apr 17, 2013, 5:50:25 PM4/17/13
to publice...@googlegroups.com
Con la siguiente sintaxis logras el cursor
Sqlexec(Tu_Conexcion,"show errors","Cursor_Error")

Pero, lo que logras en el cursor, es exactamente lo mismo que logras con
AERROR.
Cuando en AERROR[1] el código es el 1526, se trata de un error de ODBC.

El error propiamente dicho, supongamos que querés grabar 30 caracteres en una fila de 20 caracteres,
este tipo de errores no salen en AERROR y tampoco en SHOW ERRORS de MySQL.
Yo al menos no he encontrado donde LEER estos errores.


Saludos


Arnaldo Toledano
--
Arnaldo Toledano Tesys Informática Córdoba Argentina

Carlos Miguel FARIAS

unread,
Apr 18, 2013, 6:32:05 AM4/18/13
to Grupo Fox
Si a un campo de caracteres de 20 de longitud, le mandas 30 caracteres, no creo que ningún SGBD te detecte el problema, en general truncan.
Los sgbd en general, salvo que se incluya una constraint (regla) específica, solo te dan error si el tipo de datos es totalmente incompatible.
Pero en general, tratan de hacer un cast del dato (conversión de tipo), por ejemplo, si mandas un entero a un flotante o numeric, lo convierten sin problemas, un flotante a entero o numerico, lo truncan o redondean.
Saludos: Miguel, La Pampa (RA)

Guillermo MDQ

unread,
Apr 18, 2013, 9:34:40 AM4/18/13
to publice...@googlegroups.com
Si a un campo de caracteres de 20 de longitud, le mandas 30 caracteres lo que tienes es un problema de validación en tu sistema.

Saludos
Guillermo

Arnaldo Toledano

unread,
Apr 18, 2013, 9:44:31 AM4/18/13
to publice...@googlegroups.com
El error que mencione es FIGURATIVO.
Estamos hablando de como CAPTURAR ERRORES
y NO DE LOS ERRORES en si.
Yo comente cual es el texto que quisiera leer o capturar.
Si intentas hacer esto desde el MySQL Query  Broswer, en el ultimo renglon te indica con exactitud el error que has cometido.
Por lo general cuando tengo una sentencia SQL, previo a hacerla funcionar en el programa o sistema, yo lo pruebo en el query browser
para ver los datos obtenidos, si la sentencia es correcta, etc.

Arnaldo Toledano

Oscar Quiros Coto

unread,
Apr 18, 2013, 12:10:20 PM4/18/13
to publice...@googlegroups.com
Estoy de acuerdo.
Pero hay errores de otro tipo, como lo decia el compañero cuando se envía una cantidad mayor de carateres a un campo, que son errores de validacion.
En mi ejemplo envie los codigos de errores comunes que se dan cuando hay perdida de conexion con la red, lo cual es muy frecuente en las redes inalambricas, o si un usuario esta con cable y luego decide por x o y razon cambiar de red a una inalambrica, en este caso el sistema te botaria y tienes que ingresar de nuevo, la idea es que en estos casos, uno sepa que el error se trata de eso, y que se reconecte automaticamente, para seguir trabajando sin problema, y minimizar la caida del sistema.
Y esto es para cualquier motor, no solo de mysql.

Saludos.
-- 
___________________________________________________
Soporte y Sistemas OQC, S.A.
Partner Autorizado de ESET en Costa Rica
Cel:(506) 87 11 00 11
Email:os...@ssoqc.com - oscarqu...@hotmail.com
Skype: oscar.quiros.coto
GTalk: os...@ssoqc.com

Hector Colman

unread,
Apr 20, 2013, 12:33:08 PM4/20/13
to publice...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages