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)
-   -   llenar un combobox con datos de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=40822)

edelphi 27-02-2007 20:52:59

llenar un combobox con datos de una tabla
 
Bueno creo que el nombre del post dice todo, quiero hacer que desde un query se pueda hacer una consulta como por ejemplo select nombres from clientes y que todos estos datos sean llenados en un combobox o un listbox.

tengo la idea en estos momentos toy tratando de hacerlo pero no me sale por eso recurri a uds espero me puedan ayudar:eek:

roman 27-02-2007 21:07:28

Delphi cuenta con componentes especiales para hacer lo que pides en automático. Usa, por ejemplo, un DBLookupComboBox:

DBLookupComboBox.ListSource <---- DataSource
DBLookupComboBox.ListField <---- 'nombre'
DBLookupComboBox.KeyField <---- 'id_cliente'

DataSource es una componente DataSource conectada a tu Query mediante su propiedad DataSet. nombre es el campo que deseas mostrar en el combo e id_cliente es el campo llave de tu tabla de clientes.

Con esto, al abrir la consulta, automáticamente se llenará el combo con los datos.

Te recomiendo que leas la ayuda de Delphi, en su capítulo "Developing Database Applications", particularmente la sección "Using Data Controls", para que tomes una idea general del uso de las componentes de acceso a datos.

// Saludos

Caral 27-02-2007 21:44:41

Hola
A parte de lo que te ha explicado Roman, que esta totalmente en lo cierto, si quieres hacerlo siempre con un combobox se hace asi:
Código Delphi [-]
   Query1.Active := False;
   Query1.SQL.Text := 'Select nombres from clientes';
   Query1.Active := True;
   While not Query1.Eof do
   begin
      Combobox1.Items.Add(Query1.Fields[0].Text);
      Query1.Next;
   end;
Con esto lo tendras en el combobox los nombres de los clientes.
Saludos

edelphi 27-02-2007 23:15:08

bueno gracias por los consejos Roman pero todavia no logro hacer el llenado del control por ADO, cuando pongo el datasourse no me aparece nada en mi datafield, pero hay otra propiedad mas el datafield con ese si me aparece las lista de los campos, y al momento de colocarle el keyfield me aparece un error que dice "Circular datalinks are not allowed" pero ni aun asi me sale ¿a que se refiere con eso de viculo de datos circulares???. creo ke me falta aprender un poco mas de los controles ADO.

pero haciendolo por codigo como lo posteo caral si sale era justo lo que intentaba hacer pero me faltaba esta parte
Código Delphi [-]
Combobox2.Items.Add(DM.ADOTemp.Fields[0].Text)
no sabia como otorgarle ese texto al combo.

muchas gracias a los dos me impulsan a seguirn aprendiendo mucho mas:D

Lepe 28-02-2007 12:06:37

Supongamos que estas haciendo una factura, quieres que el usuario vea el nombre del cliente, pero que en la tabla factura se guarde el id_Cliente:
En el dblookupcombo:

En Datasource, eliges tablafactura
en datafield, id_cliente


DBLookupComboBox.ListSource <---- tablaClientes
DBLookupComboBox.ListField <---- 'nombre'
DBLookupComboBox.KeyField <---- 'id_cliente'

De esa forma, muestra todos los "nombres de clientes", y al guardar, se elige el valor de "keyField", que será el idCliente de la tabla Clientes, pues ese valor, se guarda en la tabla facturas en el campo id_cliente

Saludos


La franja horaria es GMT +2. Ahora son las 10:16:05.

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