FoxPro/Visual FoxPro - capturar erro: falló el desencadenante

 
Vista:

capturar erro: falló el desencadenante

Publicado por Ángel Isorna (135 intervenciones) el 22/08/2004 21:35:01
Hola a todos:

Estoy intentando capturar el error: "falló el desencadenante" que ocurre cuando intento borrar una registro que no se puede borrar por la integridad referencial.
Lo que se me ocurre es comprobar con código todas las tablas donde tiene información relacionada y si en ninguna la tiene pues entonces "delete". Pero me parece que quizás exista otra forma de hacerlo que no tenga que introducir tanto código(son muchas las tablas relacionadas).
¿Cómo se escribiría algo así como?

if (se puede borrar)
delete
else
messagebox("no se puede borrar")
endif

Gracias por adelantado.
Ángel.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:capturar erro: falló el desencadenante

Publicado por Roman Suazo (2723 intervenciones) el 23/08/2004 02:14:50
Prueba algo como esto:

nError=0
on error nError=error()
delete
on error
if nError=1705
wait window "no se puede borrar" timeout 4

endif

Hay muchas forma de resolver el asunto.. Si usas la version 8 mejor usa el TRY/CATCH.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:capturar erro: falló el desencadenante

Publicado por Ángel Isorna (135 intervenciones) el 25/08/2004 20:58:05
Hola Román Suazo:

He realizado lo que me has comentado en el mail anterior. El error que produce y se captura no me da el 1705, sino el 1539. Probando con este error funciona bien el control de borrado pero me ocurre lo siguiente:

Cada vez que borro un registro el grid que contiene los datos pierde todas sus propiedades...¿?¿?¿? Esto nunca me pasaba cuando borraba un registro en una tabla que no estaba con control de integridad referencial con el gestor de la base de Vfox 6.0

¿Por que pierde el grid todas sus propiedades y queda en blanco?

Yo cuando abro el formulario que contiene el grid en el evento load cargo la bbdd y la tabla enrrutada a la empresa x.
En el evento init cargo los datos de las columnas del grid y el origen de datos del grid. Las demás propiedades(Format, forecolor, inputmask....) las configuro en las propiedades del formulario.

¿Me puedes decir algo al respecto?

Muchas gracias por adelantado.
Ángel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:capturar erro: falló el desencadenante

Publicado por Roman Suazo (2723 intervenciones) el 25/08/2004 21:43:47
Creo que tienes que Seleccionar la tabla correspondiente antes de ejcutar el DELETE, es decir, una vez que el grid pierde el enfoque la tabla principal o padre se selecciona sola, en tu caso lo que hiciste fue borrar el registro padre y de paso borrar los registro hijos por medio de la integridad referencial.

La rutinita que te di te puede servir para atrapar cualquier error o para atrapar uno especifico. Si quieres capturar cualquier error solo checa que la variable tenga un valor igual o mayor a 1. El fox trae una clase que te puede ayudar a crear tu propio manjeador de errores...


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar