PDA

Ver la Versión Completa : TDBLookupComboBox


chipsoni
21-05-2006, 16:43:26
Tengo en un formulario un ComboBox y un DBLookupComboBox (DBLCBfiltro).
Dependiendo de lo que seleccione en el ComboBox, el DBLookupComboBox debe asociarse a una u otra tabla.
Bien, para asociar en tiempo de ejecución una tabla a un DBLookupComboBox, hago en onchange del ComboBox un if con las opciones y dentro de cada opcion hago:

DataModule.tabla1.Active;
DataModule.tabla1.Open;
DBLCBfiltro.ListSource:=DataModule.DStabla1;

hasta aqui bien, pero luego:

DBLCBfiltro.ListField:= DataModule.tabla1.nombre; (da error de compilación)
DBLCBfiltro.KeyField:=DataModule.tabla1.codigo; (da error de compilación)

He intentado tambien:

DBLCBfiltro.ListField:= nombre; (da error de compilación)
DBLCBfiltro.KeyField:= codigo; (da error de compilación)

Y por probar:

DBLCBfiltro.ListField:= DataModule.DStabla1.nombre; (da error de compilación)
DBLCBfiltro.KeyField:=DataModule.DStabla1.codigo; (da error de compilación)

¿Como se hace?, se que seguramente será una chorrada, pero estoy atrancada.

Muchas gracias.

marcoszorrilla
21-05-2006, 17:12:37
Hay que pasarle una cadena con el nombre del campo a enlazar.

DBLCBfiltro.ListField:= 'Nombre';
DBLCBfiltro.KeyField:='codigo';




Un Saludo.

chipsoni
21-05-2006, 17:34:52
Esto es lo mismo, ¿no?
DBLCBfiltro.ListField:= DataModule.tabla1.Fieldvalues['nombre'].AsString;
DBLCBfiltro.KeyField:=DataModule.tabla1.Fieldvalues['codigo'].AsInteger;

Porque si lo es, no funciona, casca en tiempo de ejecuión en el momento en que seleciono el valor en el ComboBox.
Me da error 'Invalid Variant Operation' y señala la 1º linea de las dos de arriba.

¿Alguna otra opción?

marcoszorrilla
21-05-2006, 18:36:18
Tengo que salir, pero sino recuerdo mal lo seleccionado el en Combobox se puede recuperar por la propiedad Text del mismo

DBLCBfiltro.ListField:= Combobox1.Text; Lo que hay que pasarle es el nombre del campo como texto.

Un Saludo.

chipsoni
22-05-2006, 10:34:00
No va asi.
Lo que pasa es que si yo selecciono del combobox, por ejemplo 'entidad', el dblookupcombobox tiene que cargarse con los valores del campo nombre de la tabla 'tentidad', por lo que hay que darle en el listsource el datasorce de la tabla tentidad, en el listfield hay que indicar que el campo de la tabla que quiero que muestre sea el campo 'nombre' y en el keyfield, hay que indicar el campo clave de dicha tabla (que en este caso es el campo 'codigo')

chipsoni
23-05-2006, 13:46:05
Ok, lo que pone ahora en la 1º respuesta si que funciona.
Muchas gracias.

thomasini
09-06-2006, 00:52:06
Estimados .

Alguien de uds tiene idea de como hacer q este componente DBLookupComboBox se cree dinamicamente y tome el tamaño de la descripcion asociada a una lista de datos en una BD. por ejemplo

si lo q muestra el "combo" es de solo 20 caracteres pues q tenga un tamaño de 20 como maximo pero si dentro de la lista de items hay una palabra de 30 q se agrande automaticmanet o que se disminuya sea cualquiera de los casos.

Agradecer una pronta respuesta.

Saludos
Thomas M.