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 ));
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
procedure function |
public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
Beschreibung
Kopiert Datensätze von der Quelldatenmenge in diese Datenmenge.
Mit der Methode CopyDataSet kopieren Sie die Datensätze von der ASource
-Datenmenge in diese Datenmenge.
Die Methode führt die folgenden Schritte aus:
- Kopiert die Struktur der
ASource
-Datenmenge in die Self-Datenmenge, wenn sichcoStructure
inAOptions
befindet und:- Kopiert die Indexkonfiguration der
ASource
-Datenmenge in die Self-Datenmenge, wenn sichcoIndexesCopy
inAOptions
befindet. Ansonsten setzt die Methode die Indexkonfiguration von Self zurück, wenn sichcoIndexesReset
inAOptions
befindet. - Kopiert die Aggregatkonfiguration der
ASource
-Datenmenge in die Self-Datenmenge, wenn sichcoAggregatesCopy
inAOptions
befindet, oder setzt die Aggregatkonfiguration von Self zurück, wenn sichcoAggregatesReset
inAOptions
befindet. - Kopiert die Konfiguration der Einschränkungen der
ASource
-Datenmenge in die Self-Datenmenge, wenn sichcoConstraintsCopy
inAOptions
befindet, oder setzt die Konfiguration der Einschränkungen von Self zurück, wenn sichcoConstraintsReset
inAOptions
befindet.
- Kopiert die Indexkonfiguration der
- Öffnet die Self-Datenmenge, wenn sie inaktiv ist.
- Setzt
ASource
auf den Anfang, wenn sichsoRestart
inAOptions
befindet. - Führen Sie für jeden Datensatz in
ASource
folgende Schritte aus:- Wenn sich
coEdit
inAOptions
befindet, finden Sie den entsprechenden Datensatz in der Self-Datenmenge auf.- Hinweis: CopyDataSet verwendet die Werte der Primärschlüsselfelder, um den entsprechenden Wert zu finden.
- Wenn sich
coAppend
inAOptions
befindet, fügen Sie der Self-Datenmenge einen neuen Datensatz hinzu. - Wenn sich
coDelete
inAOptions
befindet, wenn ein Datensatz vonASource
gelöscht wurde, finden Sie den entsprechenden Datensatz in der Self-Datenmenge auf und löschen Sie sie.- Hinweis: CopyDataSet verwendet die Werte der Primärschlüsselfelder, um den entsprechenden Wert zu finden.
- Kopieren Sie alle Felder, deren Namen sich in beiden Datenmengen befinden und geändert werden können. Befindet sich das Feld
ASource
nicht in dieser Datenemenge, wird es übersprungen. Es ist wichtig, dass Felder mit demselben Namen kompatibel hinsichtlich des Datentyps sind. Die Methode CopyDataSet überprüft nicht, ob Felder zuweisungskompatibel sind. - Tragen Sie Datensatzänderungen ein und wählen Sie den nächsten Datensatz in
ASource
.
- Wenn sich
Mit coRefresh
anstatt coEdit
können Sie Datensätze nur in einem lokalen Zwischenspeicher ändern. Tragen Sie keine Änderungen in die Datenbank ein. Mit dieser Option können Sie die Datenmenge anhand der Datensätze aus der ASource
-Datenmenge aktualisieren.
Diese Methode entspricht der Zuweisung von Werten zu der Eigenschaft Data. Es gibt folgende Unterschiede:
- CopyDataSet kann aus einer Nicht-FireDAC-Datenmenge kopieren. Die Eigenschaft Data ermöglicht das Kopieren von Daten nur aus einer FireDAC-Datenmenge.
- CopyDataSet arbeitet mit der TDataSet-API und löst entsprechende Ereignisse aus. Die Eigenschaft Data arbeitet mit der DatS-API, wobei keine Ereignisse ausgelöst werden.
- CopyDataSet kopiert nur aktuelle Feldwerte. Die Eigenschaft Data kopiert alle Versionen der Datensatzfelder und behält den Zeilenstatus (eingefügt, gelöscht, aktualisiert oder nicht geändert) bei.
- Die Zuweisung von Werten zu Data erfolgt viel schneller als CopyDataSet.
Beispiel
// copies dataset structure and all records
FDMemTable1.CopyDataSet(Query1, [coStructure, coRestart, coAppend]);