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() << Firedac_Comp_Dataset__3::coRestart << Firedac_Comp_Dataset__3::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
ASource
dans l'ensemble de données Self, sicoStructure
est dansAOptions
, et- Copie la configuration des index de l'ensemble de données
ASource
dans l'ensemble de données Self, sicoIndexesCopy
est dansAOptions
. Sinon, elle réinitialise la configuration des index de l'ensemble de données Self, sicoIndexesReset
est dansAOptions
. - Copie la configuration des agrégats de l'ensemble de données
ASource
dans l'ensemble de données Self, sicoAggregatesCopy
est dansAOptions
. Ou elle réinitialise la configuration des agrégats de l'ensemble de données Self, sicoAggregatesReset
est dansAOptions
. - Copie la configuration des contraintes de l'ensemble de données
ASource
dans l'ensemble de données Self, sicoConstraintsCopy
est dansAOptions
. Ou elle réinitialise la configuration des contraintes de l'ensemble de données Self, sicoConstraintsReset
est 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
ASource
au début, sisoRestart
est dansAOptions
. - Pour chaque enregistrement dans
ASource
, effectuez les opérations suivantes- Si
coEdit
est 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
coAppend
est dansAOptions
, ajoutez un nouvel enregistrement à l'ensemble de données Self. - Si
coDelete
est 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
ASource
n'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]);