Criar um um clone de um ClientDataSet transformando campos lookup em campos datas, útil para gravar o clientDataSet em disco.
function criarCloneCds(cdsOrigem: TClientDataSet; cdsClone : TClientDataSet): boolean; var retorno : boolean; I: Integer; begin retorno := false; try try {$Region 'Criando os Fields no cdsClone'} for I := 0 to cdsOrigem.FieldList.Count - 1 do begin with cdsClone.FieldDefs.AddFieldDef do begin Name := cdsOrigem.Fields[i].FieldName; DataType := cdsOrigem.Fields[i].DataType; Size := cdsOrigem.Fields[i].Size; Required := cdsOrigem.Fields[i].Required; end; end; {$ENDREGION} {$Region 'Copiando o conteudo dos campos'} cdsClone.CreateDataSet; cdsOrigem.First; while not cdsOrigem.Eof do begin cdsClone.Append; for I := 0 to cdsOrigem.FieldList.Count - 1 do cdsClone.Fields.Fields[i].Value := cdsOrigem.Fields.Fields[i].Value; cdsClone.Post; cdsOrigem.Next; end; {$ENDREGION} retorno := true; except retorno := false; end; finally Result := retorno; end; end;