Assignation directe des données
Remonter à Copie de données d'un autre ensemble de données
Vous pouvez utiliser la propriété Data de l'ensemble de données client pour assigner des données à un ensemble de données client depuis un autre ensemble de données. Data est un paquet de données qui se présente sous la forme d'un OleVariant. Un paquet de données peut émaner d'un autre ensemble de données client ou de tout autre ensemble de données avec l'aide d'un fournisseur. Une fois qu'un paquet de données est assigné à Data, son contenu est automatiquement affiché dans les contrôles orientés données connectés à l'ensemble de données client par un composant source de données.
Lorsque vous ouvrez un ensemble de données client représentant des données du serveur ou utilisant un composant fournisseur externe, les paquets de données sont automatiquement assignés à Data.
Lorsque votre ensemble de données client n'utilise pas de fournisseur, vous pouvez copier les données à partir d'un autre ensemble de données client comme suit :
Delphi :
ClientDataSet1.Data := ClientDataSet2.Data;
C++ :
ClientDataSet1->Data = ClientDataSet2->Data;
Remarque : Lorsque vous copiez la propriété Data d'un autre ensemble de données client, vous copiez également le journal de modifications, mais la copie ne reflète pas les filtres ni les portées ayant été appliqués. Pour inclure les filtres ou les portées, vous devez cloner le curseur de l'ensemble de données source.
Si vous copiez à partir d'un ensemble de données autre qu'un ensemble de données client, vous pouvez créer un composant fournisseur d'ensembles de données, le relier à l'ensemble de données source et copier ses données :
Delphi :
TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := SourceDataSet;
ClientDataSet1.Data := TempProvider.Data;
TempProvider.Free;
C++ :
TempProvider = new TDataSetProvider(Form1);
TempProvider->DataSet = SourceDataSet;
ClientDataSet1->Data = TempProvider->Data;
delete TempProvider;
Remarque : Lorsque vous assignez directement les données à la propriété Data, le nouveau paquet de données n'est pas fusionné dans les données existantes. Au lieu de cela, toutes les anciennes données sont remplacées.
Si vous souhaitez fusionner les modifications d'un autre ensemble de données, et non copier ses données, vous devez utiliser un composant fournisseur. Créez un fournisseur d'ensembles de données comme dans l'exemple précédent, mais attachez-le à l'ensemble de données de destination et au lieu de copier la propriété Data, utilisez la méthode ApplyUpdates :
Delphi :
TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := ClientDataSet1;
TempProvider.ApplyUpdates(SourceDataSet.Delta, -1, ErrCount);
TempProvider.Free;
C++ :
TempProvider = new TDataSetProvider(Form1);
TempProvider->DataSet = ClientDataSet1;
TempProvider->ApplyUpdates(SourceDataSet->Delta, -1, ErrCount);
delete TempProvider;