PDA

Ver la Versión Completa : duda sobre dbisavechanges, dbedit y una mascara en el campo


lirio
04-06-2003, 18:24:55
Buen dia, Tengo el siguiente problema.
Utilizo dbisavechanges en una tabla, bueno en un campo de dicha tabla guardo una fecha, en este caso utilizo una mascara en el campo. En la pantalla de captura para dicho campo utilizo un dbedit, el problema surge cuando no ingreso una fecha, como tengo el dbisavechanges, me manda un error de EDBEditErro Invalid input Value.
He tratado de utilizar con try except el econverterror y el edbediterror, pero no hace nada hasta al final que se ha provocado el error. Tambien he utilizado el el Onset del componente y tampoco me funicona. Podria alguien ayudarme.
Gracias.:confused:

andres1569
04-06-2003, 19:15:55
Hola:

Parece ser que el valor que queda en dicho campo cuando el usuario no introduce nada es inválido (quizás provocado por la máscara). Si no quieres que te salte el error al grabar en disco, prueba de interceptar el evento OnValidate del campo en cuestión y ahí miras si la fecha es válida. También lo puedes realizar en el evento BeforePost de la tabla.

Lo que me intriga es por qué falla si no introduces nada, ¿qué mascara estás utilizando?

Otra posible causa de error sería que el campo estuviera como Required en la base de datos y por eso te salte al grabar (aunque lo normal es que en Delphi también aparezca como Required y falle en el Post).

A ver que nos dices

lirio
04-06-2003, 22:55:36
Me dio mucho gusto que me respondiera alguien, te lo agradezco. Con respecto a tu pregunta mi mascara es !99/99/00;1;_
tengo una duda para que sirve ! y porque se pone el 9, segun entiendo tambien podria ser
!00/00/00;1;_ ¿Cual es la diferencia? Ah y se que con el 1 indica que los caracteres literales dben ser incluidos.
Con respecto a OnValidate, como funciona el evento y puede poner en ese evento edbediterror, si puedo hacerlo que error es el 'Invalid input Value' Bueno y si valido el error, de todas formas no me dejaria almacenar el campo nulo, o si? Cabe aclarar que estoy utilizando Paradox.
Gracias

andres1569
05-06-2003, 12:27:37
Hola:

El uso de las máscaras viene explicado en la ayuda de Delphi. No soy muy aficionado a las mismas así que me lo he mirado y allí dice que el 0 requiere un número y el 9 lo admite pero no lo requiere. La máscara que indicas es correcta, aunque a estas alturas de siglo XXI sería conveniente que para el año pusieras cuatro cifras: !99/99/0000;1;_

He hecho una prueba con esa máscara aplicada a un campo fecha (para que veas que en estos foros nos preocupamos por solucionar problemas ajenos) y no me salta ningún error si no introduzco valores, otra cosa es si entro en el DBEdit, escribo algo y luego lo borro, aunque aparentemente el campo está vacío, los literales sí se copian (hablo de los separadores "/") y me salta el error que tú dices, pero salta al salir del DBEdit, no al grabar (hay que pulsar ESC para que deshaga los cambios en el DBEdit).

El EDBEditError que comentas es un error del componente TDBEdit (como indica su nombre), no veo que tenga ninguna relación con el uso de dbiSaveChanges. ¿Has probado a ver si salta el mismo error cuando pierde el foco este DBEdit, sin necesidad de grabar? Prueba de pasar a otro control desde el DBEdit a ver si salta el mismo error.

Un saludo

e_god
05-06-2003, 16:45:52
Lea las respuestas al tema fechas nulas maskedit del usuario krynn77 mas abajo del 04/06/2003.