ADO y el control de errores
Publicado: Vie Dic 01, 2006 5:14 pm
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
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