Ver Mensaje Individual
  #9  
Antiguo 12-05-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 31
Lepe Va por buen camino
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í:
Código SQL [-]
CREATE EXCEPTION PLACAS_2 'LAS PLACAS ESTAS DUPLICADAS';
que te pego un tirón de orejas, crealá así:
Código SQL [-]
CREATE EXCEPTION PLACAS_DUPLICADAS  'LAS PLACAS ESTAS DUPLICADAS';



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.
Responder Con Cita