Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   TDBLookupComboBox (https://www.clubdelphi.com/foros/showthread.php?t=31905)

chipsoni 21-05-2006 16:43:26

TDBLookupComboBox
 
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.
Código Delphi [-]
 
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

Código Delphi [-]
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

DBLookupComboBox dinamico
 
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.


La franja horaria es GMT +2. Ahora son las 06:44:27.

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