Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   coger nombre de campos de una tabla (https://www.clubdelphi.com/foros/showthread.php?t=20505)

abogado 17-04-2005 20:06:35

coger nombre de campos de una tabla
 
hola,

como cojo en delphi el nombre de los campos de una tabla para meterlos en una combobox?
for i:=1 to adoquery2.fieldcount-1 do
begin
CBordenar.items.add(adoquery2.?????) ???? = no se que poner

muchas gracias.

Sotrono 17-04-2005 22:25:01

for i := 1 to AdoQuery1.FieldCount-1 do
Combobox1.Items.Add(AdoQuery1.Fields[i].DisplayName);Saludos....

Lepe 18-04-2005 10:10:19

Pero a la hora de usar ese campo para una consulta, usa AdoQuery1.Fields[i].FieldName), ya que 'DisplayName' es el título, el verdadero nombre es 'FieldName'

Un saludo

sakuragi 10-06-2005 05:05:51

hola que tal

tengo unas dudas

en que evento del combobox va ese ciclo?

el adoquery se deve ejecutar hantes o despues?

ya lo quise provar pero no me salio. prove en diferentes eventos de combobox y no me salio =S

Código:

adoquery1.sql.clear;
 adoquery1.sql.add('select * from tabla')
 adoquery1.open;
 
 forr i := 1 to AdoQuery1.FieldCount-1 do
        Combobox1.Items.Add(AdoQuery1.Fields[i].DisplayName)
                                                                                                                            FieldName

lo prove con displayname y fieldname


saludos

Lepe 10-06-2005 10:38:35

No tienes por qué utilizarlo en un evento específico del combo:

FormCreate
FormShow
FormActivate
FormResize

Estos eventos se ejecutan en ese mismo orden, FormResize, se reproduce
muchisimas veces, así que no es el adecuado. FormActivate depende; si es
una aplicación con varias ventanas, o puedes saltar de una ventana a otra,
tambien se producirá varias veces.

Como vas a usar el bucle for accediendo a los campos del Adoquery, el
adoquery debe estar abierto antes.

Por cierto, el bucle for debe empezar en cero si quieres coger todos los
campos.

Tambien puedes hacer otra cosa:
Código Delphi [-]
procedure FormCreate
for i:=0 to ado.fields.count-1 do
  combo.items.AddObject(ado.fields[i].DisplayName, ado.Fields[i]);
Con esto estas añadiendo a cada item del combo, el DisplayName, y estas
guardando el Campo Asociado, o sea el campo de tipo TField; de tal forma
que mostramos en el combo los "DisplayNames", que son mas descriptivos
para el usuario, y despues, cuando lo necesitamos por código, podemos
averiguar el nombre del campo que necesitamos nosotros como programador;
Me explico:

Código Delphi [-]
Necesito usar el item 1 del combo para una consulta sql, (por ejemplo)
var nombreCampo:string;
begin
  nombreCampo:= Tfield(combo.items[1]).FieldName
end;
1º- Como sabemos que el objeto que hemos guardado es un TField, hacemos
un Moldeo de tipos, es decir, forzamos a que delphi use el objeto como si fuera un Tfield( , despues accedemos al item que quereremos.
2º- despues de cerrar el parentesis del Casteo, ya podemos acceder a todas
las propiedades de un TField.

Edito: La consulta debe estar abierta en todo momento, ya que el objeto Tfield que guardamos en cada item, es un puntero, y está apuntando al campo del Adoquery.


La franja horaria es GMT +2. Ahora son las 11:40:34.

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