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 los campos de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=41075)

enecumene 07-03-2007 04:05:24

Llenar un combobox con los campos de una tabla
 
hola a todos!!!

quioer hacer lo siguiente he estado buscando por el foro y no he podido encontrarlo, talvez no lo busque bien, pero bueno aqui va. quiero llenar un combobox con los campos de una tablas no los datos sino los campos, me explico:

tabla clientes:

NOMCLI
DIRCLI
TELCLI
CC

en el combobox:

Nombre->valor(NOMCLI)
Direccion->valor(DIRCLI)
y asi sucesivamente..

eso es para fines de busqueda de datos como un filtro algo asi, espero que puedan entender lo explicado mas arriba.

chao, saludos...

poliburro 07-03-2007 07:21:23

Ok, Puedes hacer lo siguiente, lanzar una consulta que te devuelva por lo menos una fila de la tabla, con la finalidad de obtener la definiciónd de las columnas.

Una vez hecho esto prueba con:

Código Delphi [-]

For LiContador := 0 To DataSet.FieldCount - 1 Do
  CmbCamposTabla.Items.Add(DataSet.Fields[LiContador].FieldName;


Te comento que Fields te proporciona bastante información sobre los campos devueltos en un dataset.


Suerte

enecumene 07-03-2007 15:55:33

gracias poliburro ire a probarlo bien pronto, luego te comento como me va...

Lepe 07-03-2007 17:23:14

No haría falta ni ejecutar la consulta, creo que esto serviría:
Código Delphi [-]
var q:Tquery;
    i:integer;
begin
  q := Tquery.create(nil);
  q.databasename := 'c:\......';
  q.sql.text := select * from tabla;
  q.FieldsDef.Update;
  with q do
  for i:=0 to FieldsDef.Count-1 do
    combo.items.Add(Fieldsdef[i].FieldName);
freeandnil(q);
end;

[/saludos] :D

poliburro 07-03-2007 17:50:33

Cita:

Empezado por Lepe
No haría falta ni ejecutar la consulta, creo que esto serviría:

Código Delphi [-]
var q:Tquery;
i:integer;
begin
q := Tquery.create(nil);
q.databasename := 'c:\......';
q.sql.text := select * from tabla;
q.FieldsDef.Update;
with q do
for i:=0 to FieldsDef.Count-1 do
combo.items.Add(Fieldsdef[i].FieldName);
freeandnil(q);
end;




[/saludos] :D


Pues de hecho esa es una consulta. :|.

roman 07-03-2007 18:10:13

Si están usando el BDE, también pueden hacerlo así:

Código Delphi [-]
Session.GetFieldNames('nombre de la base', 'nombre de la tabla', ComboBox1.Items);

// Saludos

Lepe 07-03-2007 21:42:28

Si es una consulta, pero como ves no se ha abierto, no pide registros al servidor, solo crea los campos persistentes (que por supuesto tendrá que acceder al servidor para saber qué campos hay en dicha tabla).

En el caso de MDOLIB (e intuyo que IBX), también se puede obtener desde el database asociado, que dispone de estos 2 métodos públicos:
Código Delphi [-]
    procedure GetFieldNames(const TableName: string; List: TStrings);
    procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);


Saludos


La franja horaria es GMT +2. Ahora son las 21:39:44.

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