Ver Mensaje Individual
  #6  
Antiguo 28-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues yo creo que sí te estás complicando la vida.

Para empezar sería recomendable no modificar campos llave. Para mi lo mejor es usar un campo autoincremental como llave principal y evitar que el usuario vea este campo, que sea de uso interno exclusivamente. Ten en cuenta que la llave principal de una tabla será frecuente que se use para relacionar con otras tablas. Modificar esta llave por tanto, conlleva el tener que modificar todos los regsitros de otras tablas que hagan referencia a ella.

Por otra parte, normalmente las validaciones de campos o registros no se deben hacer directamente en los controles de edición. Estos controles sólo tienen dos funciones en la vida: mostrar datos al usuario y recibir datos de él.

En una validación de datos lo que estás validando es el valor del campo, no el valor del control de edición. Esto puede parecer un poco bobo pero el punto es que puedes tener varios controles de edición para un mismo campo y es mucho mejor centralizar la validación en un sólo punto que hacerla en cada control.

Este punto central puede ser el evento OnValidate del campo. Para codificar este evento debes agregar tus campos al dataset (doble click sobre la componente) y escoger dicho evento para el campo en cuestión.

El evento se generará siempre que el valor del campo vaya a escribirse en el registro actual (o mejor dicho, la copia del registro que se mantiene en memoria), por ejemplo, cuando cambias el foco a otro campo.

Otra forma de validar datos es a nivel de registro. Puedes usar el evento OnBeforePost del dataset. El evento se generará cada vez que el registro (la copia en memoria) esté a punto de grabarse en la base de datos. Aquí puedes checar el valor de uno o más campos y si algo no está bien cancelar el grabado.

También, algunas "validaciones" se hacen después de grabados los datos. Pongo entrecomillado porque en realidad me refiero a las ocasiones en que un registro no puede grabarse en la base de datos debido a alguna restricción de ésta. Por ejemplo, si intentas insertar un nuevo registro con una llave principal que coincida con la de un registro ya existente, el manejador de la base te lo impedirá y generará un error.

Este tipo de errores los puedes detectar con el evento OnPostError.

En fin, el tema es amplio y yo te recomiendo que dediques un rato a estudiar un poco para embeberte en el tema. Si requieres bibliografía te puedo recomendar el libro "La cara oculta de Delphi 4" de Ian Marteens que puedes bajar gratuitamente. Aunque es para la versión 4 de Delphi, te servirá perfectamente para entender más a fondo el tema de las bases de datos.

// Saludos
Responder Con Cita