FireDAC.Comp.DataSet.TFDDataSet.CopyDataSet

De RAD Studio API Documentation
Aller à : navigation, rechercher

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, si coStructure est dans AOptions, et
    • Copie la configuration des index de l'ensemble de données ASource dans l'ensemble de données Self, si coIndexesCopy est dans AOptions. Sinon, elle réinitialise la configuration des index de l'ensemble de données Self, si coIndexesReset est dans AOptions.
    • Copie la configuration des agrégats de l'ensemble de données ASource dans l'ensemble de données Self, si coAggregatesCopy est dans AOptions. Ou elle réinitialise la configuration des agrégats de l'ensemble de données Self, si coAggregatesReset est dans AOptions.
    • Copie la configuration des contraintes de l'ensemble de données ASource dans l'ensemble de données Self, si coConstraintsCopy est dans AOptions. Ou elle réinitialise la configuration des contraintes de l'ensemble de données Self, si coConstraintsReset est dans AOptions.
  • Ouvre l'ensemble de données Self, s'il est inactif.
  • Définit ASource au début, si soRestart est dans AOptions.
  • Pour chaque enregistrement dans ASource, effectuez les opérations suivantes
    • Si coEdit est dans AOptions, 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 dans AOptions, ajoutez un nouvel enregistrement à l'ensemble de données Self.
    • Si coDelete est dans AOptions, si un enregistrement est supprimé de ASource, 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.

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]);

Voir aussi