FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
ADO-Control de datos ingresados
Buenas...
Segurmente muchos se han encontrado con el problema de verificar si el usuario ha completado cada uno de los campos en un formulario de Alta o Modificacion. Claro, si son menos de una docena es facil poner unos cuantos IF y listo, pero si hblamos de unas veintenas... estamos complicados. Existe algún método, función o artilugio que por ejemplo muestre la excepción "Ud. no completó el campo XXXX" indistintamente de cual de los cientos de campos sea?
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#2
|
||||
|
||||
Hola,
pues lo que podrías hacer sería escribir un evento OnValidate genérico y asignarlo a todos los campos estáticos en tiempo de diseño. Algo así: Código:
procedure TDataModule1.ValidacionCampo(Sender: TField); begin if Sender.IsNull then raise Exception.Create('Error. El campo ' + Sender.DisplayCaption + ' debe tener algún valor'); end; |
#3
|
||||
|
||||
Hola
Otra posible solución. Defines los campos como no nulos en la base de datos (es decir que no se pueden dejar en blanco), así si intentan grabar un registro con esos campos en blanco saltará un error. Entonces solo tienes que interceptar el error. try DataSet.Post; except ShowMessage('Ha dejado un campo en blanco'); end; Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#4
|
||||
|
||||
Ciertamente la solución de Marc Guillot es más elegante, y de hecho es la que te recomiendo que utilices si puedes. Lo que pasa que la que yo te he puesto es algo más flexible porqué no siempre tendrás permiso para tocar la BD, o a lo mejor interesa que desde cierta aplicación existan estas reglas pero en otra no.
(En el momento de escribir la primera solución no se me ha ocurrido la opción de Marc ) Saludos. |
#5
|
||||
|
||||
Gracias muchachos...
Prefiero la solucion de MARCSC, me parece más adecuada para este caso. La solucion de Guillot... Código:
try DataSet.Post; except ShowMessage('Ha dejado un campo en blanco'); end;
__________________
Gracias de antemano por vuestra ayuda. ·.:*:.·Yako·.:*:.· |
#6
|
||||
|
||||
Hola,
yo pienso que podrías utilizar la solución de Marc Guillot, lo único que tendrias que hacer sería descernir dentro del except de que tipo de excepción se trata Código:
try DataSet.Post; except on ExcepcionCampoNulo do ShowMessage('Ha dejado un campo en blanco') on OtroTipoDeExcepcion do //lo que sea end; |
#7
|
|||
|
|||
Saludos a todos, al hilo de lo que estais comentando, resulta que me estoy intentado hacer una unit para recoger los errores del BDE para hacer algo así:
try table1.post; except errores(codigo); end; o bien en el beforePostError de la tabla. Pero tengo un problema y es que no tengo ni idea de donde sacar ese posible código de error. Hasta ahora todo lo que he mirado solo me da datos sobre el mensaje de texto pero no hay nada sobre un código al que puedan pertenecer dichos mensajes. Si alguién me puede dar una pista sobre este tema o algo que ya haya implementando estaría muy agradecido, saludos.
__________________
No hay vientos favorables para quién no conoce su rumbo. |
#8
|
||||
|
||||
Hola.
Recuerda que estás trabajando con ADO y no con BDE, por lo que los códigos de error los tienes que recoger de ADO, en concreto del objeto ADOConnection al que está conectado la consulta que ha provocado el fallo. ADOConnection.Errors[0].Number Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#9
|
|||
|
|||
Es cierto, no me había dado cuenta, me pregunta iba dirigida hacía la programación con el BDE, gracias.
__________________
No hay vientos favorables para quién no conoce su rumbo. |
|
|
|