FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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); begin if Table1.FieldByName('Cod_dep') is null then showmensaje('falta cósdigo de articulo por insertar'); end; 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 |
#2
|
|||
|
|||
Proba con: Tabla.FieldByName('campo').IsNull
Saludos.
__________________
Cordoba-Argentina |
#3
|
||||
|
||||
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.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#4
|
|||
|
|||
Como respuesta a jlcasih...
Cita:
Código:
if table1.fieldbyname('Cod_dep').isnull then( Código:
procedure TDataModule7.Table1Cod_depValidate(Sender: TField); begin if Table1.FieldByName('Cod_dep').IsNull then ShowMessage ('Debe rellenar la casilla del código del departamento'); end; A Lepe: Cita:
Toda ayuda es de agradecer. |
#5
|
||||
|
||||
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
|