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)
-   -   Creación de TFields en Runtime (https://www.clubdelphi.com/foros/showthread.php?t=70866)

vinguel 16-11-2010 10:08:20

Creación de TFields en Runtime
 
Buenos días a todos. Estoy intentando crear los TField en runtime, pero solo me crea el último. Os pongo lo que intento hacer (Solo que la asignación de campos depende de un Array dinamico que recorro en un bucle)
Código Delphi [-]
procedure TForm5.FormShow(Sender: TObject);
Var
v_Ind : Integer; v_TField : TStringField;
begin
// Qry -. TQuery Qry.DisableControls; v_TField := TStringField.Create(Self); // v_TField.FieldName := 'APT_CODAPT'; v_TField.DisplayLabel:= 'Código'; v_TField.Name := Qry.Name + v_TField.FieldName; v_TField.Visible := True; v_TField.Index := 0; v_TField.DataSet := Qry; Qry.FieldDefs.UpDate; // v_TField.FieldName := 'APT_NOMAPT'; v_TField.DisplayLabel:= 'Nombre'; v_TField.Name := Qry.Name + v_TField.FieldName; v_TField.Visible := True; v_TField.Index := 1; v_TField.DataSet := Qry; Qry.FieldDefs.UpDate; // Qry.Open; Qry.EnableControls;
end;
Muchas gracias por adelantado.

Neftali [Germán.Estévez] 16-11-2010 12:08:25

Así a primera vista sólo has realizado un Create de la clase TStringField. Para cada campo que quieras añadir debes crearlo; De esta forma, has creado uno y luego le has cambiado los valores, pero no has creado un segundo campo.

vinguel 16-11-2010 12:38:36

Gracias por responder, si, es cierto. ¿Sabes si existe alguna manera en tiempo de ejecucion de agregar todos los campos tal cual los lee de la BBDD?

Neftali [Germán.Estévez] 16-11-2010 13:31:57

Tal y como lo has hecho tú, pero utilizando un bucle para todos los campos de devuelve la consulta/tabla.

Delphius 16-11-2010 14:32:52

¿Cuál es la idea u objetivo de esto?

Un TQuery o cualquier componente xxxQuery si no tiene campos persistentes y se ejecuta una instrucción SQL SELECT automáticamente crea los Fields en tiempo de ejecución que luego son liberados al momento de cerrar el DataSet.

Saludos,

vinguel 16-11-2010 15:16:18

Ok, Muchisimas gracias a los dos.

Un saludo.


La franja horaria es GMT +2. Ahora son las 22:55:15.

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