Ver Mensaje Individual
  #10  
Antiguo 24-02-2016
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Reputación: 23
jars Va por buen camino
Me estoy encontrando con el problema que cada vez que actualizo en memoria el ClientDataset (sin hacer el Apply) me va duplicando la memoria consumida y luego al hacer el ClientDataSet.ApplyUpdates(0) ademas de tardar una eternidad no devuelve toda la memoria y asi sigue creciendo hasta que Falla.

El ClientDataSet esta enlazado con un DataSetProvider y este con un TSDQuery (SQLDirect)
Este es el código:

Código Delphi [-]
var
  // TPosData es un registro de prueba
  Pos: array [0..299] of TPosData;

begin
  for i := 0 to 299 do
    with Pos[i] do
    begin
      // cds es el ClientDataSet
      if cds.Locate('U_ID', i+1, [loCaseInsensitive]) then
        cds.Edit
      else
      begin
        cds.Insert;
        cds.FieldByName('U_ID').AsInteger := i+1;
      end;
      
      // la tabla tiene 2 campos U_ID Integer y DATA Blob.
      blobF := cds.FieldByName('DATA') as TBlobField;
      bs := cds.CreateBlobStream(blobF, bmWrite);
      try
        bs.Write(Pos[i], SizeOf(Pos));
      finally
        bs.Free;
      end;
      cds.Post;
    end;
end;

Alguna idea?
Responder Con Cita