Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   recorrer dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=52627)

gsilvei 26-01-2008 06:28:35

recorrer dbgrid
 
Hola, estoy necesitando una luz para mi duda, tengo un ClientDataSet que su contenido es visualizado en un DBGrid, donde por ejemplo aparecen 200 registros, y tengo una pequeña rutina que recorre todo el DBGrid, mi duda es como podria pausar mi rutina por ejemplo hasta el registro 50, y despues continuar por otros 50 y asi sucesivamente.



Código Delphi [-]

procedure TForm1.EnviarCorreoMultiple(DBGrid :TDBGrid; email, Asunto :String);
var
 Direcciones :String;
begin
 Direcciones := '';
 with DBGrid1.DataSource.DataSet do
 begin
   First; //Vamos al primer registro...
   while not Eof do //Recorramos el DataSet hasta el ultimo registro...
   begin
     Direcciones := Direcciones + FieldByName(email).AsString + ';'; //Agrega Direcciones...
   Next;
   end;
 end;

 SetLength(Direcciones, Length(Direcciones) -1); //Quitemos el punto y coma que sobra...
 ShellExecute(Handle, 'open', pchar('mailto:'+Direcciones+'?subject='+Asunto),  '', '',SW_SHOW);
end;



mi SpeedButton1:

Código Delphi [-]

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
   EnviarCorreoMultiple(DBGrid1, 'email', 'Consultas...');
end;



gracias por la ayuda,

saludos

eduarcol 26-01-2008 06:41:25

Código Delphi [-]
procedure TForm1.EnviarCorreoMultiple(DBGrid :TDBGrid; email, Asunto :String);
var
 Direcciones :String;
 nCont: Integer; //Agregamos una variable para contar los registros 
begin
 Direcciones := '';
 with DBGrid1.DataSource.DataSet do
 begin
   First; //Vamos al primer registro...
   while not Eof do //Recorramos el DataSet hasta el ultimo registro...
   begin
     Direcciones := Direcciones + FieldByName(email).AsString + ';'; //Agrega Direcciones...
     Inc(nCont); //Contamos cuantas direcciones van
     //si hay mas de 50 enviamos e inicializamos
     if nCont >= 50 then
     begin
         SetLength(Direcciones, Length(Direcciones) -1); //Quitemos el punto y coma que sobra...
         ShellExecute(Handle, 'open', pchar('mailto:'+Direcciones+'?subject='+Asunto),  '', '',SW_SHOW);
         nCont := 0;
         Direcciones := '';  
     end;
   Next;
   end;
   //si al salir del ciclo quedaron direcciones se envian
   if nCont >= 1 then
     begin
         SetLength(Direcciones, Length(Direcciones) -1); //Quitemos el punto y coma que sobra...
         ShellExecute(Handle, 'open', pchar('mailto:'+Direcciones+'?subject='+Asunto),  '', '',SW_SHOW);
         nCont := 0;
         Direcciones := '';  
     end;
 end;


end;

gsilvei 26-01-2008 06:57:45

Hola eduarcol,
gracias por la luz,
funciona realmente como necesitaba,
saludos


La franja horaria es GMT +2. Ahora son las 16:25:17.

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