Tema: DbLookup
Ver Mensaje Individual
  #2  
Antiguo 01-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mblascog.

El TDBLookupComboBox no es muy complicado de usar, sólo tenés que asignar ciertas propiedades:

ListSource: Va el DataSource que apunta al DataSet cuyos datos querés que despliegue y muestre.
ListField: Va el campo que queres que se muestre al desplegar y por el cuál se hace la elección.
KeyField: Va el campo que devuelve del DataSet al que apunta el DataSource ingresado en ListSource.

Hasta aquí tenemos un Combo que nos desplaza al escribir y si hacemos click sobre la flecha invertida se despliega mostrándonos el contenido.

Pero podemos hacer algo más. Supongamos que tenemos dos DataSet con sus respectivos DataSource, llamados por ejemplo:
tbPersonas, dsPersonas y tbCiudades, dsCiudades.

tbPersonas tiene los siguientes campos:
ID_PERSONA
NOMBRE_PERSONA
REF_CIUDAD

Y tbCiudades los siguientes:
ID_CIUDAD
NOMBRE_CIUDAD

Si estamos ingresando personas y queremos elegir la ciudad de la que es oriunda, desde una lista de ciudades ya ingresadas, haríamos en el DBLookupComboBox:

ListSource: dsCiudades
ListField: NOMBRE_CIUDAD
KeyField: ID_CIUDAD
( Hasta acá nos mostrará los nombres de las ciudades con el comportamiento que buscas )

Y para que también nos ingrese ID_CIUDAD en el campo REF_CIUDAD de tbPersonas, llenamos en el DBLookupComboBox las siguientes propiedades:
DataSource: dsPersonas (DataSet que recibe la elección)
DataField: REF_PERSONAS (Campo que recibe la elección)
Ahora, cada vez que hagamos una selección en el DBLookupComboBox, se modificará el campo REF_CIUDAD de dsPersonas estableciendo la relación: REF_CIUDAD -> ID_CIUDAD.

Aunque no es el ejemplo, también se podría asignar el nombre de la ciudad si el campo emisor y receptor declarados en KeyField y DataField respectivamente, fueran de tipo TStringField.

Como te darás cuenta si no asignas las propiedades DataSource y DataField, sólo mostrará lo ingresado en ListField sin modificar nada.

Espero que la explicación te aclare un poco el panorama...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 01-06-2011 a las 09:56:25.
Responder Con Cita