PDA

Ver la Versión Completa : DBLookupComboBox


raco
08-02-2005, 22:19:25
Hola!!

a ver si alguien me puede ayudar, quiero hacer que en un DBLookupComboBox hacer que se seleccione un registro determinado, por ejemplo, tengo un DBLookupComboBox al que le asigno con un query los nombres de unos empleados:

daniel carrillo
david morales
julieta gomez
etc..

y quiero que se posicione en daniel carrillo, se puede hacer esto?, quisiera saber si existe alguna forma de posicionarlo por el nombre o tengo que hacerlo por el indice (ListFieldIndex) o q se yo, gracias.

ramiretor
08-02-2005, 23:38:49
Hola
La propiedad KeyField te permite posicionar el DBLookupComboBox en el renglon que gustes:


MiDBLookupComboBox.KeyField := ValorDeseado;


Espero te sirva
Saludos a todos

raco
08-02-2005, 23:58:25
es que no se si asi es como debe ser, tengo esta linea DBLookupComboBox1.KeyField:='daniel carrillo';

el campo esta guardado en la tabla tal cual como lo pongo y lleno el DBLookupComboBox antes de aplicar esta linea y me dice que el campo daniel carrillo no se ha encontrado. Asi es como lo debo de poner, como String?

gracias.

roman
09-02-2005, 01:48:42
En KeyField únicamente podrás poner valores que correspondan al campo que hayas especificado en KeyField. Lo que te dice ramiretor es complentamente correcto pero me parece que no tienes en claro cómo usar la componente.

En lo referente a lo que lista la componente hay tres propiedades básicas: ListSource, ListField y KeyField. ListSource apunta al DataSet (Table, Query, etc.) de donde tomes los valores. ListField es el campo que quieres que aparezca en el combo y KeyField es la llave primaria de la tabla.

Para cambiar el elemento listado en el combo debes asignar algún valor a KeyValue que corresponda a un valor de KeyField. Da la impresión de que en tu caso, el nombre de la persona es lo que tienes asignado en ListField y no en KeyField. Si quieres cambiar el elemento a partir del nombre (ListField) lo que puedes hacer es primero un Locate en la tabla para colocarla en el registro adecuado y entonces asignar a KeyField el valor del campo KeyField correspondiente:


if Query1.Locate('nombre', 'daniel carrillo', []) then
DBLookupComboBox1.KeyValue := Query1.FieldByName(llave primaria).AsInteger;


// Saludos

raco
09-02-2005, 02:19:53
gracias, lo que queria poner en el DBLookupComboBox era el nombre de un supervisor o gerente de acuerdo con lo que necesita el programa q estoy haciendo, si tenia bien las otras propiedades y si sabia como usarlas ;) , solo q creo q no me supe explicar.:p

ListSource:=DataSource2 (q tiene asignado el query de mi consulta)
ListField:=Nombre (q es el campo de la tabla)
KeyField:=Nombre

lo que yo queria hacer era que se ubicara solo (como indice) en el nombre que le pusiera (el nombre de usuario con el q accesan al sistema), este nombre, no necesito comprobar que exista x q ya lo hice ya q es de la forma que entran al sistema. :D Gracias, me sirvio lo de keyvalue. :D

DBLookupComboBox1.KeyValue:='Cristian Ramirez'; :)

de nuevo Gracias por contestarme ramiretor y roman