![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Pero, tal como explica Lepe, cuando un intento de violación de alguna de estas restricciones suceda, el motor lo notifica al cliente en forma de excepción. Esta excepción puede ser capturada en el evento OnPostError del dataset que estés usando, o dejar que pase hasta llegar a ApplicationEvents, como describe Lepe. De cualquier forma que lo hagas, realmente no estás tú validando los datos; es el motor de la base quien lo hace, y tu aplicación simplemente maneja la notificación de un posible error. // Saludos |
|
#2
|
|||
|
|||
|
De nuevo por aqui!
bueno considerenme como de lento aprendizaje. Hice estas excepciones y triggers:
les recuerdo que estoy haciendo un post a la bd y que estoy tratando de capturar los errores al tratar de ingresar un campo vacio o con datos duplicados. ¿Bueno ahora que hago con esto? ¿ Cual seria el codigo a poner? ¿en BeforePost o en PostError? una vez mas les agradesco su ayuda y atencion. |
|
#3
|
||||
|
||||
|
EMDOError está declarado en mdo.pas
Lo demás fijo que no son erroes, es que no sabe lo que era EMDOError. Veo que el hilo ha avanzado mucho, pero hace falta tener las cosas algo más claras. Si el campo placas está declarado como NOT NULL, y en tu programa creas un registro y le das a guardar (sin modificar nada), ya Firebird protestará con un mensaje de error "violation of constraint ENTRADA_1 for table ENTRADA" o algo similar, por tanto, no es necesario ni crear trigger ni excepciones. Pruebalo para que veas como funciona la cosa. Ahora aplicas una mezcla entre lo dicho por roman y lo mío, esto es, en el dataset entrada de tu form de delphi, localiza el evento onPostError, y añade ShowMessage mostrando los parámetros que trae el evento para ver que te muestra. Ahora en ese evento es donde tendrás que adaptar las rutinas "parseError" y también "IsBDConstraint" para tu caso particular. Lo mismo para las placas duplicadas, si pones un indice único sobre el campo, Firebird ya protesta, por ende, no hace falta crear la excepción, es más en este caso está mal planteado, ya que si introduce un número de placa correcto (no duplicado), en el trigger solo se compara si es distinto de null y salta la excepción, asi que, no dejará introducir ningún número de placa, ¡ninguno! OFFTOPIC: Que no te vea yo declarar una excepción así: que te pego un tirón de orejas, crealá así:
Si quieres dejar pasar las excepciones al ApplicationsEvent, no uses el OnPostError para nada. Efectivamente me parece más adecuado usar el evento OnPostError del dataset porque está precisamente para eso, para detectar errores al guardar. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 12-05-2007 a las 04:25:18. |
|
#4
|
|||
|
|||
|
Lepe, Roman: Muchas gracias por la ayuda, la verdad estaba harto pero ya va saliendo esto.
Efectivamente elimine los triggers y exception de la bd ya que tenia los campos declarados como UNIQUE coloque el showmessage para ver el mensaje de horror como dijo Lepe y en realidad no tuve que modificar nada de IsConstraint pues ya lo habia declarado pero como existia la excepcion habia un conflicto en los mensajes a mostrar al eliminar las excepciones quedo el mensjae de Isconstraint. Aunque aun persiste un error al parecer la operacion de post no se cancela o se queda en el limbo pues aunque corriga el dato de placa el mensaje sigue siendo el mismo y si cierro la aplicacion me aparece el mensaje de "RunTime error 216 at 00438CF9" Caray! ya parece serie de TV "To be continued" Gracias |
|
#5
|
|||
|
|||
|
Hola!
Bueno despues de tratar de averiguar que pasaba con esa operacion que se quedaba en el limbo acabe haciendo esto:
¡Que cosas!¿no? Nuevamente me repito muchas gracias por su ayuda y atencion!!!! p.d. ¡Amenazo con regresar! ![]() |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| onValidate de un campo (Excepciones) | Caro | Conexión con bases de datos | 2 | 06-06-2006 22:33:22 |
| OnValidate .. No funciona en IB? | PINO72 | Firebird e Interbase | 4 | 12-04-2005 16:15:17 |
| Onvalidate Como se usa | servicomp | Conexión con bases de datos | 1 | 16-02-2005 04:46:05 |
| OnValidate | javiermorales | OOP | 5 | 13-11-2003 15:52:52 |
| OnValidate y Foco | javiermorales | OOP | 9 | 21-05-2003 08:10:16 |
|