Cara, fiz umas alterações na sua procedure para clonagem de ClientDataSet e estou postando para o caso de poder ajudar outras pessoas.
[]'s
[]'s
- Código:
procedure TForm1.ClonarDataSetSemVinculo(const pCdsOrigem,pCdsDestino:TClientDataSet);
var
ClientDataSetTemp : TClientDataSet;
Data2 : OleVariant;
i: Integer;
begin
pCdsOrigem.ReadOnly := False;
TProvider(FindComponent(pCdsOrigem.ProviderName)).UpdateMode := upWhereAll;
TProvider(FindComponent(pCdsOrigem.ProviderName)).Options := [];
for i := 0 to pCdsOrigem.Fields.Count - 1 do
begin
pCdsOrigem.Fields[i].ReadOnly := False;
pCdsOrigem.Fields[i].ProviderFlags := [pfInUpdate];
end;
ClientDataSetTemp := TClientDataSet.Create (nil);
ClientDataSetTemp.SetProvider(pCdsOrigem);
ClientDataSetTemp.Open;
Data2 := ClientDataSetTemp.Data;
ClientDataSetTemp.Close;
pCdsDestino.Data := Data2;
if not pCdsDestino.Active then
pCdsDestino.Open;
pCdsDestino.ReadOnly := False;
for i := 0 to pCdsDestino.Fields.Count - 1 do
begin
pCdsDestino.Fields[i].ReadOnly := False;
pCdsDestino.Fields[i].ProviderFlags := [pfInUpdate];
end;
end;