PDA

Ver la Versión Completa : Trabajo con DBGrid


DenisDiaz
14-11-2007, 22:15:28
Amigos, estoy usando en componente DBGrid. He rebisado la ayuda y encontré un ejemplo que después de haber seleccionado uno o varios registros, obtiene sus campos y los manda a un ListBox. Lo que necesito es eso presisamente pero sin necesidad de seleccionar los registros. Es decir, teniendo el DBGrid ya con los valores poder obtener cualquiera de sus campos. Algunos de ustedes conoce la forma?
Muchas gracias por su tiempo.

Caral
14-11-2007, 22:38:15
Hola
No entiendo.
El nombre del Campo?
o
El contenido?
Saludos

DenisDiaz
14-11-2007, 23:06:28
Lo necesito todo, pero principalmente los valores de los campos.

jhonny
14-11-2007, 23:19:03
Lo necesito todo, pero principalmente los valores de los campos.

Sinceramnete no entendí, sería interesante si nos explicas de nuevo el asunto, pero un poco mejor ¿Que te parece?

DenisDiaz
15-11-2007, 00:05:19
Muy bien, después de conectarme a una tabla .dbf utilizando un DataSet, logro mostrar en un DBGrid su contenido. Hasta ahi todo está bien. Ahora necesito acceder (o sacar) el contenido de toda la tabla para poder hacer otras operaciones con esos valores, etc. Por ejemplo, si el componente fuera un StringGrid no tendría problemas, porque este último tiene la propiedad Cell(i,j) con la que puedo obtener los valores de las celdas que desee. Esto no lo he logrado completamente con el DBGrid.
Digo que no completamente porque pude pasar los datos del DBGrid para un StringGrid utilizando el siguiente código:

if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
StringGrid1.RowCount:= StringGrid1.RowCount+1;
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
for j := 0 to FieldCount-1 do
begin
StringGrid1.Cells[j,i]:=Fields[j].AsString;
end;
end;
end;


Como pueden apreciar se realiza cuando una o varias filas están seleccionadas, pero necesito hacer esta operación sin necesidad de seleccionarlas. Si necesitan mas explicación haganlo saber. Gracias

jhonny
15-11-2007, 00:14:51
Bueno, ¿Esto es lo que necesitas?, espero que si :).

var
I :Integer;
begin
I := 0;
with DBGrid1.DataSource.DataSet do
begin
First;
while not EOF do
begin
for j := 0 to FieldCount-1 do
begin
StringGrid1.Cells[j,i]:=Fields[j].AsString;
end;
Inc(I);
Next;
end;
end;
end;

DenisDiaz
15-11-2007, 15:14:42
Perfecto!! Muchas gracias! Después de ver la solución da pena haber preguntado eso.

jhonny
15-11-2007, 16:20:13
Perfecto!! Muchas gracias! Después de ver la solución da pena haber preguntado eso.

Bueno, preguntando tambien se aprende, cuando yo estoy en algun tipo de clase aprendiendo cualquier cosa, siento que pregunto un monton de cosas sencillas, pero estoy seguro que con esas preguntas, muchos compañeros que tenian esas mismas dudas y que no se atrevian a preguntar (Sinceramente no se a que le tienen miedo) tambien lograron entender el asunto :).