FireDAC.Comp.DataSet.TFDDataSet.CopyDataSet

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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

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 sich coStructure in AOptions befindet und:
    • Kopiert die Indexkonfiguration der ASource-Datenmenge in die Self-Datenmenge, wenn sich coIndexesCopy in AOptions befindet. Ansonsten setzt die Methode die Indexkonfiguration von Self zurück, wenn sich coIndexesReset in AOptions befindet.
    • Kopiert die Aggregatkonfiguration der ASource-Datenmenge in die Self-Datenmenge, wenn sich coAggregatesCopy in AOptions befindet, oder setzt die Aggregatkonfiguration von Self zurück, wenn sich coAggregatesReset in AOptions befindet.
    • Kopiert die Konfiguration der Einschränkungen der ASource-Datenmenge in die Self-Datenmenge, wenn sich coConstraintsCopy in AOptions befindet, oder setzt die Konfiguration der Einschränkungen von Self zurück, wenn sich coConstraintsReset in AOptions befindet.
  • Öffnet die Self-Datenmenge, wenn sie inaktiv ist.
  • Setzt ASource auf den Anfang, wenn sich soRestart in AOptions befindet.
  • Führen Sie für jeden Datensatz in ASource folgende Schritte aus:
    • Wenn sich coEdit in AOptions 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 in AOptions befindet, fügen Sie der Self-Datenmenge einen neuen Datensatz hinzu.
    • Wenn sich coDelete in AOptions befindet, wenn ein Datensatz von ASource 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.

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

Siehe auch