Hola fjcg02.
Otra situación que se te puede presentar, es agregar campos luego de haber creado el ClientDataSet. Para hacerlo sin perder los datos que llevas cargados, podes hacer como en este ejemplo:
Código Delphi
[-]
procedure TForm1.Button2Click(Sender: TObject);
var
cds : TClientDataSet; clon: TClientDataSet; i : Integer;
begin
cds := ClientDataSet1;
clon := TClientDataSet.Create(nil);
try
clon.CloneCursor(cds, False, True );
clon.First;
cds.Close;
cds.FieldDefs.Update;
cds.FieldDefs.Add('Campo3', ftCurrency, 0, False);
cds.FieldDefs.Add('Campo4', ftFloat, 0, False);
cds.CreateDataSet;
cds.Open;
while not clon.Eof do
begin
cds.Append;
cds.FieldByName('Campo1').AsInteger := clon.FieldByName('Campo1').AsInteger;
cds.FieldByName('Campo2').AsString := clon.FieldByName('Campo2').AsString;
cds.Post;
clon.Next;
end;
cds.First;
finally
clon.Free;
end;
end;
Saludos
