![]() |
Validación de campos
Hola a todos, tengo una pequeña duda que seguro ya habéis solucionado en el foro pero no consigo encontrar lo que busco así que os lo comento y si alguien me puede ayudar o indicar en que post está la solución pues genial.
El tema es valiadar DBEdits de un formulario para la inserción de un nuevio artículo. He estado echando un vistazo y he llegado ha entender hasta que haces doble clic en table, obtienes los "fields" y en el evento OnValidate hay que poner la condición, correcto?? Bien, ahora quiero que algunos de los DBEdits no puedan quedar en blanco al pulsar "aceptar" y además que la columna Cod_articulo no se pueda repetir. Según he estado mirando debería ser una cosa como la que indico a continuación, no?? Código:
procedure TDataModule7.Table1Cod_depValidate(Sender: TField);Pero me indica que null Undeclares Identifier "null". Por lo que respecta a que el campo no esté repetido, se utiliza el Locate o Find en el OnValidate? Si me podéis decir que estoy haciendo mal, algún enlace o código (mejor, incluso), os lo agradecería mucho. Un saludo a todos:p |
Proba con: Tabla.FieldByName('campo').IsNull
Saludos. |
En mi humilde opinión deberías resolver todos esos problemas del lado del motor de BBDD.
- Si el código debe ser único, pues clave primaria de la tabla, o bien crea un índice único sobre ese campo en la base de datos. Al crear un duplicado, el motor de BBDD te dará una excepción, la capturas y muestras mensajito al usuario si corresponde. - Para que no permita campos nulos, añade en la BBDD que no sea nulo, y caso idéntico al anterior. De esta forma, te olvidas de usar Find o Locate, tu motor de BBDD hará eso por tí de forma más eficiente (a través de índices o restricciones). Si necesitas más info, dinos qué BBDD estas utilizando y qué componentes de acceso, BDE, ADO, etc. saludos y espero te sirva. |
Como respuesta a jlcasih...
Cita:
Código:
if table1.fieldbyname('Cod_dep').isnull then(Código:
procedure TDataModule7.Table1Cod_depValidate(Sender: TField);A Lepe: Cita:
Toda ayuda es de agradecer. |
tratandose de Paradox, en el evento BeforePost, podrías hacer algo así:
Para el usuario final, es bastante tedioso ver campo por campo un mensaje; con esto lo haces de un solo mensaje. En cuanto a tu mensaje anterior, faltaría esto:
Abort produce una excepción silenciosa, por tanto, no se graba el registro actual y deja el registro en modo de inserción. En el método que yo propongo, simplemente creo y lanzo una excepción, que actua igual que Abort, salvo que muestra un mensaje al usuario saludos |
| La franja horaria es GMT +2. Ahora son las 05:47:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi