Hola rcarrillom.
Hice una prueba con un
TClientDataSet en memoria cargándolo de forma aleatoria:
Código Delphi
[-]
const
TOTREG = 235000;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
s: array[0..255] of char;
begin
Randomize;
FillMemory(@s[0], 255, Byte('-'));
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;
for i:= 1 to TOTREG do
begin
if i mod 1000 = 0 then
ClientDataSet1.MergeChangeLog;
ClientDataSet1.Append;
ClientDataSet1ID.AsInteger:= i;
ClientDataSet1Num1.AsFloat:= Now;
ClientDataSet1Num2.AsFloat:= Now;
ClientDataSet1Num3.AsFloat:= Now;
ClientDataSet1IsNav.AsBoolean:= Boolean(Random(2));
ClientDataSet1Flag.AsString:= Char(Random(27)+65);
ClientDataSet1TimeStamp.AsDateTime:= Now;
ClientDataSet1Comentarios.AsString:= s;
ClientDataSet1Num4.AsInteger:= i;
ClientDataSet1.Post;
end;
for i:= 1 to Random(499)+1 do
begin
ClientDataSet1.Locate('ID', Random(TOTREG-1)+1,[]);
ClientDataSet1.Edit;
ClientDataSet1Comentarios.AsString:= 'Registro modificado';
ClientDataSet1.Post;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('Cambios: %d',[ClientDataSet1.ChangeCount]));
end;
Y, si bién la carga inicial tarda dada la cantidad de registros, la respuesta de la propiedad
ChangeCount en
Button1Click es instantánea.
No sé si se me esté pasando algo por alto o si habré interpretado mal la situación...
Saludos