FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Hago un control db-aware?
Hola, les explico mi problema: tengo un ComboBoxEx (el de las imagenes) que relleno desde una base de datos y luego utilizo el indice desde una base de datos, etc..., y que rellena un ComboBox normal según el elemento que este elegido.
La pregunta es: ¿debo hacer un control dbaware de ese ComboBoxEx? Es algo que me esta dando mucho que pensar, porque solo lo quiero rellenar para una tabla en concreto y no sé como limitar para que sólo se pueda usar esa tabla. Además no sé si es "ético" el hacer un control dbaware tan cerrado (en el sentido de que los controles dbaware sirven para todo...). Y segundo, si me aconsejan hacer un control dbaware, ¿pongo una propiedad en ese ComboBoxEx que sea el otro ComboBox para poder rellenarlo, o como lo hago? Muchas gracias (y perdonad la parrafada :P, pero me estoy iniciando en los dbaware, hasta ahora lo hacia todo a base de codigo...) |
#2
|
|||
|
|||
Por cierto, hago mal en no usar db-aware ni eso de opf?? DB-aware no lo utilizo porque me da sensacion de no tener el control, no me gusta eso de depender de los eventos, y opf no lo utilizo por desconocimiento, no he encontrado material es español y en ingles es un poco denso para mi...
|
#3
|
||||
|
||||
Cita:
Otra cosa es que encuentres uno hecho y lo utilices (intenta siempre que sean con codigo fuente, ya que puedes encontrarte con alguna situación en la que necesites modificar su comportamiento ) Puedes obtener un comportamiento similar simplemente con el evento OnDataChange del Datasource, que te pasa el campo que cambia ó nil si cambian todos los campos (por ejemplo al hacer un next). Plantalo en el form y lo enganchas a la tabla, aunque ya tengas otro en el datamodule, funcionan ambos. Luego en el Onchange o en el Onexit del control (en ambos mejor) haces lo que corresponda con el campo o con otro control. Lo de no usar ningun dbaware.... pues me parece que estas desperdiciando un tiempo valiosisimo, igual simplemente te falta un poco de "enfoque" Cita:
¡que le corten la cabeza! Si un usuario se enfrenta al campo Numero de factura y se le ocurre meter "42sfr" lo menos que se merece es una ventanita de error "42sfr no es un número entero válido" , si intenta meter 29/2/99 que le zurzan al usuario. Tu aplicación es para trabajar con ella, no para hacer el tonto. Tu usa controles Dbaware, que el control lo tienes igualmente, pero en otro sitio. En lugar de preocuparte por la "entrada de datos" preocupate por la "consistencia de los datos" es decir, que tu tabla no admita valores erroneos, que si encuentra alguno lance una excepción al usuario del tipo "la fecha final no puede ser anterior a la fecha inicial"... Si no entiende este mensaje será mejor que cambie el ratón por la azada. El modelo de eventos es Esencial para programar en delphi (y en cualquier otra cosa). Una vez que empieces a "fiarte" de los eventos empezaras a manejar Excepciones, raise por aqui, raise por alla... eso si, intenta, por todos los medios, no usar try except si lo que quieres es cambiar el texto del error (por ejemplo del ingles al castellano) hay otros medios de conseguir errores en castellano que plagar el código de try excepts, como por ejemplo modificar una copia del fichero SysConst.pas y añadirlo a tu proyecto (lo tendras para descargar en la red) Si quieres literatura al respecto te recomiendo cualquier cosa de Ian Marteens ("la cara ocualta de deplhi") |
#4
|
|||
|
|||
Ok, muchas gracias por responder. Me has resuelto todas las dudas. Supongo que es lo que dices del "sindrome del usuario mimado", intento controlar todos los errores, y debería dejar que fuese la base de datos la que lanzase el error.
PD: y si que es verdad que es malgastar el tiempo, no llevo hecho casi nada y lo que me ha costado..., a ver si consigo llegar a un punto medio entre db-aware y codigo al menos... |
|
|
|