FireDAC.Comp.DataSet.TFDDataSet.CopyDataSet
Delphi
procedure CopyDataSet(ASource: TDataset; AOptions: TFDCopyDataSetOptions = [coRestart, coAppend]);
C++
void __fastcall CopyDataSet(Data::Db::TDataSet* ASource, TFDCopyDataSetOptions AOptions = (TFDCopyDataSetOptions() << TFDCopyDataSetOption::coRestart << TFDCopyDataSetOption::coAppend ));
Propriétés
| Type | Visibilité | Source | Unité | Parent | 
|---|---|---|---|---|
| procedure function | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp | FireDAC.Comp.DataSet | TFDDataSet | 
Description
Copie des enregistrements de l'ensemble de données source dans cet ensemble de données.
Utilisez la méthode CopyDataSet pour copier les enregistrements de l'ensemble de données ASource dans cet ensemble de données. 
La méthode effectue les opérations suivantes :
- Copie la structure de l'ensemble de données ASourcedans l'ensemble de données Self, sicoStructureest dansAOptions, et- Copie la configuration des index de l'ensemble de données ASourcedans l'ensemble de données Self, sicoIndexesCopyest dansAOptions. Sinon, elle réinitialise la configuration des index de l'ensemble de données Self, sicoIndexesResetest dansAOptions.
- Copie la configuration des agrégats de l'ensemble de données ASourcedans l'ensemble de données Self, sicoAggregatesCopyest dansAOptions. Ou elle réinitialise la configuration des agrégats de l'ensemble de données Self, sicoAggregatesResetest dansAOptions.
- Copie la configuration des contraintes de l'ensemble de données ASourcedans l'ensemble de données Self, sicoConstraintsCopyest dansAOptions. Ou elle réinitialise la configuration des contraintes de l'ensemble de données Self, sicoConstraintsResetest dansAOptions.
 
- Copie la configuration des index de l'ensemble de données 
- Ouvre l'ensemble de données Self, s'il est inactif.
- Définit ASourceau début, sisoRestartest dansAOptions.
- Pour chaque enregistrement dans ASource, effectuez les opérations suivantes- Si coEditest dansAOptions, localisez l'enregistrement correspondant dans l'ensemble de données Self.- Remarque : CopyDataSet utilise les valeurs des champs de la clé primaire pour rechercher la valeur correspondante.
 
- Si coAppendest dansAOptions, ajoutez un nouvel enregistrement à l'ensemble de données Self.
- Si coDeleteest dansAOptions, si un enregistrement est supprimé deASource, localisez l'enregistrement correspondant dans l'ensemble de données Self et supprimez-le.- Remarque : CopyDataSet utilise les valeurs des champs de la clé primaire pour rechercher la valeur correspondante.
 
- Copiez tous les champs dont les noms existent dans les deux ensembles de données et qui sont modifiables. Si le champ ASourcen'est pas trouvé dans cet ensemble de données, il est ignoré. Il est important que les champs avec le même nom dans les deux ensembles de données soient de types de données compatibles. La méthode CopyDataSet ne vérifie pas si les champs sont compatibles en terme d'affectation.
- Validez la modification de l'enregistrement et sélectionnez le prochain enregistrement dans ASource.
 
- Si 
Utilisez coRefresh plutôt que coEdit pour modifier des enregistrements uniquement dans une mémoire cache locale. Ne validez pas les modifications dans la base de données. Cette option peut être utilisée pour actualiser cet ensemble de données en utilisant des enregistrements de l'ensemble de données ASource. 
Cette méthode est similaire à l'affectation de valeurs à la propriété Data. Les différences sont les suivantes :
- CopyDataSet peut copier des données d'un ensemble de données non FireDAC. La propriété Data vous permet de copier des données uniquement d'un ensemble de données FireDAC.
- CopyDataSet fonctionne à travers l'API TDataSet, en déclenchant des événements appropriés. La propriété Data fonctionne à travers l'API DatS ; aucun événement n'est déclenché.
- CopyDataSet copie uniquement des valeurs de champs en cours. La propriété Data copie toutes les versions des champs de l'enregistrement et conserve l'état de la ligne (inséré, supprimé, mis à jour ou non modifié).
- L'affectation de valeurs à Data est beaucoup plus rapide que CopyDataSet.
Exemple
// copies dataset structure and all records
FDMemTable1.CopyDataSet(Query1, [coStructure, coRestart, coAppend]);