Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2004
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
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...)
Responder Con Cita
  #2  
Antiguo 29-06-2004
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
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...
Responder Con Cita
  #3  
Antiguo 29-06-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
Cita:
lo quiero rellenar para una tabla en concreto y no sé como limitar para que sólo se pueda usar esa tabla.
pues entonces la respuesta es clara: No necesitas hacer un componente dbaware.
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:
DB-aware no lo utilizo porque me da sensacion de no tener el control
supongo que es el sindrome del usuario mimado, es decir, el tener que controlar la introducción de todos y cada uno de los datos, que no pueda meter letras en campos numericos, que no meta negativos o decimales si no lo soporta, que meta las cadenas sin espacios, que meta la fecha válida... blablabla...
¡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")
Responder Con Cita
  #4  
Antiguo 29-06-2004
Sirkius Sirkius is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
Sirkius Va por buen camino
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...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:46:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi