PDA

Ver la Versión Completa : Adicionar un ComboBox en un DBGrid con datos de otra tabla


rufo
30-06-2015, 03:53:25
Buenas noches amigos espero que esten bien, haber les planteo mi duda que tengo esperando me puedan ayudar o dar una luz para ver como hacerle, resulta que tengo un dbgrid conectada a una tabla en el cual lleno con registros pero ahora hay la necesidad de que una columna llamada Cuenta me muestre registros que tengo en la tabla mas quiero mencionar que la tabla tiene una vinculacion de este campo con otra tabla llamada catalogo entonces lo que en si quiero hacer es que me muestre eso datos pero en la columna del dbgrid como si lo estuviera haciendo en un combobox pero ahora quiero hacerlo en un dbgrid, como ven espero haberme explicado y de antemano gracias, le dejo una imagen de mi dbgrid.

http://i62.tinypic.com/207nbxe.jpg

nlsgarcia
30-06-2015, 05:32:37
rufo,


...Adicionar un ComboBox en un DBGrid con datos de otra tabla...

:rolleyes:

Revisa esta información:

Adding components to a DBGrid (http://delphi.about.com/od/usedbvcl/l/aa081903a.htm)
Espero sea útil :)

Nelson.

Neftali [Germán.Estévez]
30-06-2015, 10:02:27
¿Has mirado si te sirve la propiedad Picklist de la columna del grid en la cual quieres que aparezca el desplegable?

http://s26.postimg.org/vvb1t1qtl/Captura_777.png

rufo
30-06-2015, 19:45:09
Gracias por contestarme y Neftali si he visto esa propiedad pero son valores estaticos de los cuales la tabla de catalogo se va ir actualizando con nuevos registros y esa propiedad no se actualiza si no tendria que meterlos manual mente entonces no se si halla otra manera de hacerlo.

ecfisa
30-06-2015, 21:06:17
Hola rufo.

Así, a simple vista, pareciera que el control que te convendría usar es un TDBLookupComboBox, pero la explicación de la situación es un poco confusa.

Veo que previamente figura la columna "Id_Cliente" y me pregunto que dato debería ir en la columna "Cliente" y desde donde debería ser tomado...

Si ya tienes el ID del cliente y mediante la columna "Cliente" buscas mostrar el nombre, bastaría hacer a dicha columna fuera un campo Lookup. De no ser así, el TDBLookupComboBox te permitirá obtener el ID del cliente desde la lista de nombres tomado de la tabla de clientes ( ¿ o catálogo ? ).

Realmente me gustaría que explicaras con mas detalle lo que estas buscando hacer y las estructuras de las tablas con que vas a hacerlo.

Saludos :)

rufo
30-06-2015, 22:55:08
Ok cuando ingrese un numero de cuenta en el campo cuenta que me muestre el nombre de la cuenta en el campo cliente es en si lo que quiero hacer desde el dbgrid ahora estos datos lo traigo desde una tabla que se llama catalogo pero no se como mostrar ahora cuando no se encuentre el numero de cuenta que me permita agregar una cuenta nueva en la tabla de catalogo y este se actualize y me muestre el nuevo registro es como si lo hiciera con un combobox pero lo quiero hacer en el dbgrid, creen que sea posible.

ecfisa
30-06-2015, 23:42:22
Hola rufo.

¿ Y el número de cuenta lo traes desde alguna tabla o lo ingresas de forma directa en el DBGrid ?
Otras dudas,
¿ También ingresas la columna ID_CLIENTE desde el DBGrid o se autocompleta de acuerdo la columna CLIENTE ?
¿ La tabla CATALOGO tiene los nombres e ID's de los clientes ?

Sigo sin entender claramente como y donde realizas los ingresos y las búsquedas.

Saludos :)

rufo
01-07-2015, 02:58:27
¿ Y el número de cuenta lo traes desde alguna tabla o lo ingresas de forma directa en el DBGrid ?
Si lo traigo de otra tabla llamada catalogo pero no me aparece la cuenta de esa tabla que quiero traer esa información
Otras dudas,
¿ También ingresas la columna ID_CLIENTE desde el DBGrid o se autocompleta de acuerdo la columna CLIENTE ?
No ese campo lo ingresa el usuario
¿ La tabla CATALOGO tiene los nombres e ID's de los clientes ?
No tiene los ID´S de las cuentas
Sigo sin entender claramente como y donde realizas los ingresos y las búsquedas.
Eso es lo que quiero hacer las consultas o visualizar los datos de la tabla de Catalogo, espero me ayuden de todos modos yo le estoy investigando y si puedo antes les pongo mi solucion, gracias

ecfisa
01-07-2015, 04:26:02
Hola rufo

...
Eso es lo que quiero hacer las consultas o visualizar los datos de la tabla de Catalogo, ...

Entonces es válido lo que te mencioné en un mensaje anterior en usar un TDBLookupComboBox.

Aplica el código del enlace que te sugirió nlsgarcia en el mensaje #2, reemplazando el TComboBox por un TDBLookupComboBox, en el que deberás configurar las siguientes propiedades:

ListSource -> TDataSource asociado a la tabla CATALOGO.
ListField -> La columna de la tabla CATALOGO que quieras que se visualice como lista en el combo.
KeyField -> La columna que es clave en la tabla CATALOGO.
DataSource -> TDataSource asociado a la tabla CUENTAS (según creo, la visualizada en el DBGrid).
DataField -> Columna de la tabla CUENTAS que referencia al la fila actual de la tabla CATALOGO.

De ese modo las selecciones echas en el DBLookupComboBox se verán reflejadas de forma automática en la tabla CUENTAS y por ende en el DBGrid.

Saludos :)