Ver Mensaje Individual
  #2  
Antiguo 15-09-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
Disculpa la franqueza pero viendo éste y otros de tus mensajes me parece que estás haciendo un uso incorrecto de las herramientas.

Yo diría que básicamente hay tres tipos de validaciones: a nivel de caracter, a nivel de campo y a nivel de registro. Las primeras las controlas con máscaras sobre el campo y te permiten restringir el tipo de caracteres que puede aceptar el campo. Las segundas se hacen con los eventos OnValidate de cada campo que se generarán cada vez que cambies de campo pero dentro de un mismo registro. Puede ser porque te moviste de columna en un DBGrid o porque cambiaste de DBEdit. El tercer tipo de validaciones las controlas con el evento OnBeforePost de los datasets y te permiten validar los datos de un registro completo antes de que se actualice en la tabla física.

Además de las validaciones existen los controles de errores, que pueden ser generados por la base de datos. Por ejemplo al insertar un registro cuya llave primaria esté repetida. Este tipo de excepciones las puedes controlar con el evento OnPostError del dataset.

Una cosa que en mi opinión hay que entender, es que los controles DB Aware como los DBGrid, los DBEdit, etc. son básicamente de 'palo', es decir, se limitan a desplegar el contenido de los registros de una tabla pero no intervienen directamente en validaciones ni nada que tenga que ver con la logística del manejo de datos.

En el caso que presentas por ejemplo; si quieres validar al momento de retroceder de campo entonces usa el evento OnValidate del campo que pierde el foco. Y desde luego veo muy poco conveniente tratar de hacer validaciones en eventos como OnKeyDown y, sobre todo, usando teclas como ESC que tienen una funcionalidad muy específica: CANCELAR. Si escribes un dato en una celda y al oprimir ESC se borra el dato (si no había nada de principio) o se regresa al valor original, no debe sorprenderte: eso es lo que se espera de la tecla ESC.

// Saludos
Responder Con Cita