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)
-   -   Ver DataSet en un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=47838)

Dado de baja 08-09-2007 11:27:42

Ver DataSet en un DBGrid
 
Hola
he intentado esto: dbgrid1.DataSource.DataSet:=ds;

Donde ds es un dataset con varios registros. Y no funciona.

¿ Habría alguna forma de representar en un DBGrid el contenido del Dataset ?

basti 08-09-2007 11:55:27

¿Te da un error en tiempo de compilación o de ejecución?

Si es en ejecución, puede ser que tengas definidas columnas en el grid que no coinciden con los campos del nuevo dataSet.

De todas maneras te aconsejo cambiar el DataSource en vez del DataSet, ya que así afectará sólo al dbgrid, y no al resto de los controles de acceso a datos que puedas tener asociados a dataSet.

Dado de baja 08-09-2007 13:06:46

El error lo da en tiempo de ejecución.

En el grid no tengo nada definido. Lo he colocado en el form, y nada más.

En ejecución a través de una consulta de SQL obtengo en un DataSet unos registros, y mi idea era poder visualizarlos.
Como algo opcional, por eso no lo pongo con su datasource y todo, sino que el mismo dataset que uso para procesar los registros, poder mostrarlos.

basti 08-09-2007 13:24:11

¿Te muestra algún error o simplemente no hace nada?

Puede ser que el dataset sea unidireccional (SqlQuery o alguno similar).

Dado de baja 08-09-2007 18:14:32

si, es unidireccional, viene de un ADOsql

Lo he resuelto con un StringGrid.

Voy a poner el código por si a alguien le sirve:
Código:

var
    DS: TDataSet;
    x,r: integer;
    s: string;
begin

 s:='select * from planeta';
 if fsol.Text<>'0' then
  s:=s+' WHERE idsol='+fsol.Text;

 dm.GetSql(s,ds);  // Lanzamos la consulta.

 //Fijamos el número de columnas y filas.
 StringGrid1.ColCount:=ds.FieldCount;
 StringGrid1.RowCount:=ds.RecordCount+1;
 // ahora pongo los nombres de los campos como cabecera de la regilla.
 for x:=0 to ds.FieldCount-1 do
  StringGrid1.Cells[x,0]:=ds.Fields[x].FieldName;
 r:=1;
 ds.First;
 while not ds.Eof do // ahora le toca el turno a los datos.
 begin
    for x:=0 to ds.FieldCount-1 do
      StringGrid1.Cells[x,r]:=ds.Fields[x].AsString;
    r:=r+1;
    ds.Next;
 end;
end;

Funciona muy bien, y rápido.


La franja horaria es GMT +2. Ahora son las 06:15:49.

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