Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Se puede convertir un DBGrid en una StringList? (https://www.clubdelphi.com/foros/showthread.php?t=72423)

jhonalone 17-02-2011 22:15:48

Se puede convertir un DBGrid en una StringList?
 
Hola.
Llevo unos días buscando en el foro esta cuestión y no encuentro respuesta.

Necesito "manipular" los datos de una DBGrid asociado al Detail de un conjunto Master/Detail. Estoy encontrando muchas dificultades para manejar, ordenar ,eliminar filas en el DBGrid.

He pensado convertirlo en una TStringList, mucho más útil a la hora de imprimir y manejar.

Siento molestaros por ésto.

Os agradecería una solución, si es posible.

Gracias.

BlueSteel 17-02-2011 23:33:29

Hola jhonalone

Si nos dices que especificamente quieres hacer te podriamos ayudar

Yo realizo varios procesos con DBGrids... y no tengo problemas...

tambien tengo un proceso que me pasa los datos de un DBGrid (Tabla o Query) a un StringGrid solo para poder imprimir en columnas (de la forma que yo quiero) y tambien me va bien...

si te sirve te dejo el código..

Salu2:p:cool:

ElKurgan 18-02-2011 07:27:06

¿Y por que no usar un TListView en lugar de un TStringList?.

Actualmente mucha gente lo usa para simular Grids.

De echo, he aqui un ejemplo del maestro Marteens:
http://www.marteens.com/trick31.htm

Un saludo

Neftali [Germán.Estévez] 18-02-2011 10:47:49

Cita:

Empezado por jhonalone (Mensaje 391263)
Necesito "manipular" los datos de una DBGrid asociado al Detail de un conjunto Master/Detail. Estoy encontrando muchas dificultades para manejar, ordenar ,eliminar filas en el DBGrid.

He pensado convertirlo en una TStringList, mucho más útil a la hora de imprimir y manejar.

No explicas gran cosa de porqué el cambio, ni de los problemas que tines, pero bueno...

Supongo que bastaría con un recorrido por la tabla que quieres traspasar al TStringList (creo que debes estar pensando en un TStringGrid).
En número de columnas del TStringGrid es el mismo número de coliumnas o campo que te devuelve el TDataset y las filas tantos registros como tenga la tabla.

jhonalone 18-02-2011 18:30:17

Traspasar desde DBGrid a TListBox
 
Bueno, lo primero agradeceros el interés que siempre os tomáis por ayudarnos a los novatos.

Lo segundo: ¡¡¡MIL PERDONES!!! por la redacción precipitada ayer del mensaje. (Me estaban esperando y yo me empeñé en dejar "colgada" mi pregunta, antes de marcharme)
La prisa nunca es buena consejera.

¿En qué estaría yo pensando?. Siento haber llevado vuestros esfuerzos por un camino equivocado.

Veamos.

Donde escribí TStringList, quería decir TListBox.

Lo que pretendo hacer es seleccionar por campos el DBGrid Detail de un conjunto de dos tablas Paradox (Maestro/Detalle). Después realizar cálculos con algunos campos e imprimir el subconjunto seleccionado dependiendo de los resultados calculados. Digamos que es algo como un Cliente(Maestro) que realiza un pedido de varios artículos (Detalle).

Tengo los datos del Cliente en la pantalla y en el DBGrid todos los pedidos que ha hecho. Los pedidos, corresponden a distintas fechas, secciones, representantes, materias... etc.

Hasta aquí todo marcha correctamente.

Ahora quiero seleccionar subconjuntos de pedidos, basados en fechas y/o en secciones y/o en representantes, materias. Y trabajar con estos subconjuntos.

Como pretendo instalar el programa en una pequeña red local, no creo que sea aconsejable utilizar filtros para realizar estos subconjuntos.

No se si estaré equivocado, (pues nunca he trabajado con Bases de Datos), pero pienso que sería más dinámico realizar la primera consulta por cliente, recoger todos los pedidos (Como hago ahora) en un DBGrid, traspasar los datos a un TListBox y trabajar con el TListBox, liberando así las bases de datos para otras consultas desde otros puestos de la red.


Si no está claro, intentaré explicarme mejor.

Solamente os pido que me ayudeis a traspasar el DBGrid a un TListBox

No quiero extenderme más.

¡¡Gracias por vuestra paciencia y vuestra ayuda.!!

Voy a iniciar otro hilo con la pregunta correcta, creo que es lo mejor.

AzidRain 18-02-2011 19:02:38

Recuerda que el grid solo es la representación visual de los datos de la tabla. Si quieres manipular los datos, tienes que irte directo sobre la tabla y así todos los componentes que la utilicen se actualizan solos. No necesitas liberar nada para otras consultas pues el servidor de base de datos lo que haces es mandarte los datos que pediste sin modificar los datos reales. Entiendo que en tablas planas ya esto resulta bastante complicado pues pocos las siguen usando pero te recomiendo que analices como está la lógica.

ecfisa 18-02-2011 19:08:31

Hola jhonalone.

Cita:

Solamente os pido que me ayudeis a traspasar el DBGrid a un TListBox

Lo pedido:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  BM: TBookMarkStr;
  i: Integer;
  s: string;
begin
  ListBox1.Clear;
  BM:= DBGrid1.DataSource.DataSet.Bookmark;
  DBGrid1.DataSource.DataSet.DisableControls;
  DBGrid1.DataSource.DataSet.First;
  while not DBGrid1.DataSource.DataSet.Eof do
  begin
    s:= '';
    for i:= 0 to DBGrid1.FieldCount - 1 do
    begin
      s:= s + DBGrid1.Fields[i].AsString;
      if i < DBGrid1.FieldCount - 1 then
        s:= s + '  -  ';
    end;
    ListBox1.Items.Add(s);
    DBGrid1.DataSource.DataSet.Next;
  end;
  DBGrid1.DataSource.DataSet.Bookmark:= BM;
  DBGrid1.DataSource.DataSet.EnableControls;
end;

Un saludo.

ecfisa 18-02-2011 19:18:42

Hola jhonalone.

Ahora veo que has publicado el mensaje 'Convertir DBGrid en TListBox' como un nuevo hilo en el foro Tablas planas.
Combiné ambos temas (en ambos tenías respuestas) y elimino uno de los post, ya que es el mismo título y el mismo contenido.

Por favor tratá de evitar la duplicación de los temas, muchas gracias.

Un saludo.

jhonalone 20-02-2011 11:17:06

Gracias a todos por vuestros esfuerzos.
Sobre todo aecfisa ,cuyo código funcionó perfectamente.
Gracias a todos.
Un saludo


La franja horaria es GMT +2. Ahora son las 08:46:30.

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