Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Copiar todo el resultado de un Filtro (DBGrid) en Tabla (https://www.clubdelphi.com/foros/showthread.php?t=70332)

Lenny 14-10-2010 23:48:29

Copiar todo el resultado de un Filtro (DBGrid) en Tabla
 
Bueno, esa es la pregunta, si pudieran darme una mano, Como puedo copiar el resultado de un filtro (Almacenado en un DBGrid) a la base de datos??? Necesito filtrar productos asociados a una OT y estos copiarlos a otra tabla y eventualemnte borrar el contenido del filtro, para copiar un solo registro simepre lo hago asi:


Código Delphi [-]
procedure TOTrabajo.Button4Click(Sender: TObject);
begin
  if Application.MessageBox('La orden de Trabajo será enviada a Producción.','PRODUCCION',mb_Ok +
  mb_IconQuestion)= idOk then
BDatos.TOTPENDIENTE.Insert;
BDatos.TOTPENDIENTE.FieldbyName('OT').AsString := BDatos.TOTHISTORICO.FieldbyName('OT').AsString;
BDatos.TOTPENDIENTE.FieldbyName('RUT').AsString := BDatos.TOTHISTORICO.FieldbyName('RUT').AsString;
BDatos.TOTPENDIENTE.FieldbyName('CLIENTE').AsString := BDatos.TOTHISTORICO.FieldbyName('CLIENTE').AsString;
BDatos.TOTPENDIENTE.Post;
BDATOS.TOTPRODUCCION.Refresh;

end;
Hay alguna forma de recorrer todo el DBGrid (Previamente Filtrado) y copiar a una tabla solo el contenido de este??? y eventualente borrar el contenido del DBGrid????De antemano muchas gracias... espero no estar abusando... PD Utilizo Delphi 2010, Zeos y MySQL

ecfisa 15-10-2010 00:46:35

Cita:

Empezado por Lenny (Mensaje 379332)
Hay alguna forma de recorrer todo el DBGrid (Previamente Filtrado) y copiar a una tabla solo el contenido de este??? y eventualente borrar el contenido del DBGrid????De antemano muchas gracias... espero no estar abusando... PD Utilizo Delphi 2010, Zeos y MySQL

Hola Lenny.

Creo que tenés un error conceptual, lo que está filtrado no es el DBGrid, es la Tabla.
Para realizar lo que deseas tenés que tener dos tablas declaradas con la misma estructura.
Suponiendo para el ejemplo que tus tablas sean Tabla1 y Tabla2 y estén ya abiertas,
el código para copiar a Tabla2 el resultado que se filtró en Tabla1, podría ser:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  i :integer;
begin
  with Table1 do
  begin
    Filtered:= False;
    Filter:= 'Campo ='+QuotedStr('Valor_a_Filtrar');
    Filtered:= True;
    First;
    while not Eof do
    begin
      Table2.Append;
      for i:= 0 to FieldCount-1 do
        Table2.Fields[i]:= Table1.Fields[i];
      Table2.Post;
      Table1.Next;
    end;
  end;
end;

Por supuesto con una sentencia SQL se hace de forma mucho más rápida y sencilla (en el foro tenés muchos ejemplos ); pero creo que este deja más en claro donde son aplicados los filtros.



Saludos. :)

Lenny 15-10-2010 00:51:21

Gracias Ecfisa, no es primera vez me sacas de un apuro, reviso y te cuento como me fue... Te pasaste!!!

ecfisa 15-10-2010 01:03:46

Lenny, revisá los ejemplos para hacerlo con SQL, te va a sorprender la diferencia de eficiencia y velocidad entre ambos.

Por ejemplo aca .

Saludos. :)


La franja horaria es GMT +2. Ahora son las 04:55:54.

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