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.

ADO y el control de errores

SQL databases
Responder
Fredy
Mensajes: 199
Registrado: Mié Mar 29, 2006 1:28 am

ADO y el control de errores

Mensaje por Fredy »

Hola,
Estoy empezando a hacer pruebas con los Xailer y Mysql bajo ADO y ne surgen
unas cuantas dudas.
La primera de ellas es sobre el control de errores. A ver si poniendo un
ejemplo me puedo explicar.
TEngo una tabla InnoDB con un campo llamado CODIGO que actúa como í­ndice
primario. A la hora de insertar un registro, tengo dos opciones:
- Utilizar el método que utilizo con dbf de comprobar antes de insertar un
data que ese dato no exista actualmente.
Es una opción válida, pero estoy desperdiciando gran parte de la potencia
de sql, ya que al ser un í­ndice primario el motor de bases de datos puede
hacer solito esa parte del trabajo.
- Deslegar el trabajo en el motor sql, pero en este caso si se produce un
error no sé como cazarlo. Es más, consultando ::oAdoDs:IsError sí­ que puedo
saber si se ha producido un error, pero no sé de qué error se trata. Si consulto
::oAdoDs:LastError me dice algo así­ como
"[MySQL][ODBC 3.51 Driver][mysqld-5.0.27-community-nt]Duplicate entry '0001'
for key 1" que tiene pintas de ser el mensaje de error del driver Odbc. Sin
embardo, desde el propio intérprete de comandos de mysql me dice: ERROR 1062
(23000): Duplicate entry '0001' for key 1. Como podéis ver el mensaje que
me da Xailer "se come" el código 1062 que es lo que realmente me puede servir
para orientar al usuario a cerca del error producido.
En ADO tiene que haber una colección o clase especí­fica para el control de
errores producidos, pero no la he podido encontrar, no sé si a causa de usar
ADO a través de ODBC.
Resumiendo, que me vendrí­a muy bien poder acceder al código de error producido,
no solo al texto de dicho error.
Creo recordar que por algún sitio he leí­do que se puede hacer un select sobre
la tabla de errores, pero no lo encuentro. He probado con show error; pero
al contrario que select, el comando show no me devuelve ningún resultado
desde Xailer.
Un saludico,
Fredy
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

ADO y el control de errores

Mensaje por ignacio »

Fredy,
Echale un ojo al método TDataSource:GetErrors y ShowErrorList
Saludos,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
news:[email=a20b86f306618c8e3835730d556@news.xailer.com...]a20b86f306618c8e3835730d556@news.xailer.com...[/email]
> Hola,
>
> Estoy empezando a hacer pruebas con los Xailer y Mysql bajo ADO y ne
> surgen unas cuantas dudas.
>
> La primera de ellas es sobre el control de errores. A ver si poniendo un
> ejemplo me puedo explicar.
>
> TEngo una tabla InnoDB con un campo llamado CODIGO que actúa como índice
> primario. A la hora de insertar un registro, tengo dos opciones:
>
> - Utilizar el método que utilizo con dbf de comprobar antes de insertar un
> data que ese dato no exista actualmente. Es una opción válida, pero estoy
> desperdiciando gran parte de la potencia de sql, ya que al ser un índice
> primario el motor de bases de datos puede hacer solito esa parte del
> trabajo.
>
> - Deslegar el trabajo en el motor sql, pero en este caso si se produce un
> error no sé como cazarlo. Es más, consultando ::oAdoDs:IsError sí que
> puedo saber si se ha producido un error, pero no sé de qué error se trata.
> Si consulto ::oAdoDs:LastError me dice algo así como "[MySQL][ODBC 3.51
> Driver][mysqld-5.0.27-community-nt]Duplicate entry '0001' for key 1" que
> tiene pintas de ser el mensaje de error del driver Odbc. Sin embardo,
> desde el propio intérprete de comandos de mysql me dice: ERROR 1062
> (23000): Duplicate entry '0001' for key 1. Como podéis ver el mensaje que
> me da Xailer "se come" el código 1062 que es lo que realmente me puede
> servir para orientar al usuario a cerca del error producido.
>
> En ADO tiene que haber una colección o clase específica para el control de
> errores producidos, pero no la he podido encontrar, no sé si a causa de
> usar ADO a través de ODBC.
>
> Resumiendo, que me vendría muy bien poder acceder al código de error
> producido, no solo al texto de dicho error.
>
> Creo recordar que por algún sitio he leído que se puede hacer un select
> sobre la tabla de errores, pero no lo encuentro. He probado con show
> error; pero al contrario que select, el comando show no me devuelve ningún
> resultado desde Xailer.
>
> Un saludico,
> Fredy
>
>
>
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Fredy
Mensajes: 199
Registrado: Mié Mar 29, 2006 1:28 am

ADO y el control de errores

Mensaje por Fredy »

Hola,
Las dos funciones más o menos dicen lo mismo que lasterror(), pero siguen
sin indicar el código de erros. Para todos tipo de errores me devuelve siempre
el error #-2147217900 que debe de ser una especie de "sintax error" genérico
de mysql o del odbc.
En principio geterrors() vendrí­a fenomenal, pero en lugar de devolverme el
código de error causante del error (1062) siempre me devuelve el #-2147217900
con lo cual estoy en las mismas, sé que se ha producido un error, pero no
sé cual.
Un saludico,
fredy
> Fredy,
>
> Echale un ojo al método TDataSource:GetErrors y ShowErrorList
>
> Saludos,
>
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

ADO y el control de errores

Mensaje por ignacio »

Fredy,
No me he olvidado de ti. ;-)
Efectivamente el control de errores de ADO estaba en pelotas. Estoy con él y
espero acabarlo hoy mismo o mañana por la mañana. Cuenta con que lo subiré
mañana sin falta.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
news:[email=a20b86f306d18c8e3b16fbca90a@news.xailer.com...]a20b86f306d18c8e3b16fbca90a@news.xailer.com...[/email]
> Hola,
>
> Las dos funciones más o menos dicen lo mismo que lasterror(), pero siguen
> sin indicar el código de erros. Para todos tipo de errores me devuelve
> siempre el error #-2147217900 que debe de ser una especie de "sintax
> error" genérico de mysql o del odbc.
>
> En principio geterrors() vendría fenomenal, pero en lugar de devolverme el
> código de error causante del error (1062) siempre me devuelve el
> #-2147217900 con lo cual estoy en las mismas, sé que se ha producido un
> error, pero no sé cual.
>
>
> Un saludico,
> fredy
>
>
>> Fredy,
>>
>> Echale un ojo al método TDataSource:GetErrors y ShowErrorList
>>
>> Saludos,
>>
>
>
>
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

ADO y el control de errores

Mensaje por ignacio »

Fredy,
Quisiera haberlo probado un poco más, pero parece que va bien. Te incluyo
los módulos modificados en este mensaje.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
news:45746f7a$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Fredy,
>
> No me he olvidado de ti. ;-)
>
> Efectivamente el control de errores de ADO estaba en pelotas. Estoy con él
> y
> espero acabarlo hoy mismo o mañana por la mañana. Cuenta con que lo subiré
> mañana sin falta.
>
> Un saludo
>
> --
> Ignacio Ortiz de Zúñiga
> http://www.xailer.com
> "Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
> news:[email=a20b86f306d18c8e3b16fbca90a@news.xailer.com...]a20b86f306d18c8e3b16fbca90a@news.xailer.com...[/email]
>> Hola,
>>
>> Las dos funciones más o menos dicen lo mismo que lasterror(), pero siguen
>> sin indicar el código de erros. Para todos tipo de errores me devuelve
>> siempre el error #-2147217900 que debe de ser una especie de "sintax
>> error" genérico de mysql o del odbc.
>>
>> En principio geterrors() vendría fenomenal, pero en lugar de devolverme
>> el
>> código de error causante del error (1062) siempre me devuelve el
>> #-2147217900 con lo cual estoy en las mismas, sé que se ha producido un
>> error, pero no sé cual.
>>
>>
>> Un saludico,
>> fredy
>>
>>
>>> Fredy,
>>>
>>> Echale un ojo al método TDataSource:GetErrors y ShowErrorList
>>>
>>> Saludos,
>>>
>>
>>
>>
>
>


Attached files Obj.rar (23.4 KB)Â
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
fredy[3]
Mensajes: 9
Registrado: Lun Dic 04, 2006 8:50 pm

ADO y el control de errores

Mensaje por fredy[3] »

Gracias!!
Lo pruebo hoy mismo y te cuento
Un saludico,
Fredy
"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> wrote:
>Fredy,
>
>Quisiera haberlo probado un poco más, pero parece que va bien. Te incluyo
>los módulos modificados en este mensaje.
>
>Un saludo
>
>--
>Ignacio Ortiz de Zúñiga
>http://www.xailer.com
>"Ignacio Ortiz de Zúñiga" <NoName@xailer.com> escribió en el mensaje
>news:45746f7a$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
>> Fredy,
>>
>> No me he olvidado de ti. ;-)
>>
>> Efectivamente el control de errores de ADO estaba en pelotas. Estoy con
él
>> y
>> espero acabarlo hoy mismo o mañana por la mañana. Cuenta con que lo subiré
>> mañana sin falta.
>>
>> Un saludo
>>
>> --
>> Ignacio Ortiz de Zúñiga
>> http://www.xailer.com
>> "Fredy" <fredy@navegandoconxailer.com> escribió en el mensaje
>> news:[email=a20b86f306d18c8e3b16fbca90a@news.xailer.com...]a20b86f306d18c8e3b16fbca90a@news.xailer.com...[/email]
>>> Hola,
>>>
>>> Las dos funciones más o menos dicen lo mismo que lasterror(), pero siguen
>>> sin indicar el código de erros. Para todos tipo de errores me devuelve
>>> siempre el error #-2147217900 que debe de ser una especie de "sintax
>>> error" genérico de mysql o del odbc.
>>>
>>> En principio geterrors() vendría fenomenal, pero en lugar de devolverme
>>> el
>>> código de error causante del error (1062) siempre me devuelve el
>>> #-2147217900 con lo cual estoy en las mismas, sé que se ha producido
un
>>> error, pero no sé cual.
>>>
>>>
>>> Un saludico,
>>> fredy
>>>
>>>
>>>> Fredy,
>>>>
>>>> Echale un ojo al método TDataSource:GetErrors y ShowErrorList
>>>>
>>>> Saludos,
>>>>
>>>
>>>
>>>
>>
>>
>
>
>
Responder