Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como Asignar los campos a un DbGrid en tiempo de ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=74181)

oscarac 03-06-2011 05:05:43

Como Asignar los campos a un DbGrid en tiempo de ejecucion
 
Buenas noches

tengo una consulta

como puedo hacer para que un dbGrid tome los campos de una consulta u otra?

Ejemplo

Código Delphi [-]
 
StrSql := 'Select Campo1, Campo2, Campo3 From Tabla'

entonces si el dbgrid esta asociado al dataSource del query asumira los campos Campo1, Campo2, Campo3

como podria hacer para que si la consulta tuviera otros campos el dbGrid los asuma

Código Delphi [-]
 
StrSql := 'Select CampoA, CampoB, CampoC From Tabla'

espero haberme echo entender

oscarac 03-06-2011 05:11:57

la idea que tengo es la siguiente :

como el query puede tener diferentes campos (porque es una cadena armada), pense que podria hacer un for para recorrer los campos y luego hacer algo asi como

dbgrid1.Columns[0].value := Campo del query [0]


no se si es valida mi idea

ecfisa 03-06-2011 05:18:38

Hola oscarac.

Si no te entiendo mál, se hace automáticamente siempre que no hayas definido las columnas con el editor de columnas y los campos pertenezcan a la misma tabla.

Por ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT CAMPO1, CAMPO2 FROM TABLA';
    Open;
  end;
end;
El DBGrid mostrará CAMPO1 y CAMPO2.

Y con:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT CAMPO3, CAMPO4 FROM TABLA';
    Open;
  end;
end;
El DBGrid mostrará CAMPO3 y CAMPO4.

Pero no sé si es eso lo que buscas.

Saludos.

oscarac 03-06-2011 05:19:06

encontre que haciendo

Código Delphi [-]
 
DBGrid1.Columns.RebuildColumns;
podria cambiar los campos del dbgrid...

y como podria hacer para que los campos (persistentes) en el query, puedan cambiar y pueda tener nuevos campos persistentes

Al González 03-06-2011 05:41:22

Campos —objetos TField— siempre vas a tener. ;)

Pero si quieres que haya variables individuales para cada uno (una de las principales cosas que se consiguen con los campos persistentes) y que dichas variables cambien en tiempo de ejecución por las que correspondan a la consulta en turno, temo que eso no se podrá hacer. :)

Explica con más detalle qué objetivo hay detrás de tener campos persistentes "cambiantes".

Saludos.

Al González.

oscarac 03-06-2011 05:55:59

lo que pasa es que estoy haciendo un reporte que me muestra detalle o resumen de una informacion, entonces tengo un modulo que me migra la informacion en excel (para ello necesita de un dbgrid que lo tengo oculto en el form)

entonces queria solo utilizar un dbgrid y no 2 ( 1 para detalle y otro para resumen)

aunque por premura de tiempos tuve que usar 2 dbgrids


La franja horaria es GMT +2. Ahora son las 18:11:10.

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