Daten direkt zuweisen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Daten von einer anderen Datenmenge kopieren


Sie können der Eigenschaft Data einer Client-Datenmenge die Daten einer anderen Datenmenge zuweisen. Data enthält ein Datenpaket in Form eines OleVariant-Werts. Ein Datenpaket kann von einer anderen Client-Datenmenge oder bei Verwendung eines Provider-Objekts von einer anderen Datenmenge stammen. Sobald der Eigenschaft Data ein Datenpaket zugewiesen wurde, wird sein Inhalt automatisch in den datensensitiven Steuerelementen angezeigt, die mit der Client-Datenmenge über eine Datenquellenkomponente verknüpft sind.

Wenn Sie eine Client-Datenmenge öffnen, die Server-Daten repräsentiert oder eine externe Provider-Komponente verwendet, werden der Eigenschaft Data automatisch Datenpakete zugewiesen.

Verwendet Ihre Client-Datenmenge keinen Provider, können Sie die Daten wie folgt von einer anderen Client-Datenmenge kopieren:

Delphi:

ClientDataSet1.Data := ClientDataSet2.Data;

C++:

ClientDataSet1->Data = ClientDataSet2->Data;

Anmerkung:  Beim Kopieren der Eigenschaft Data einer anderen Datenmenge wird auch das Änderungsprotokoll berücksichtigt. In der Kopie sind jedoch keine der angewendeten Filter oder Bereiche enthalten. Um auch Filter und Bereiche zu berücksichtigen, replizieren Sie stattdessen den Cursor der Quelldatenmenge.

Sie kopieren Daten aus einer Datenmenge, bei der es sich nicht um eine Client-Datenmenge handelt, indem Sie eine Datenmengen-Provider-Komponente erstellen, sie mit der Quelldatenmenge verknüpfen und dann ihre Daten kopieren:

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;

Anmerkung:  Bei direkten Zuweisungen an die Eigenschaft Data wird das neue Datenpaket nicht in die existierenden Daten eingefügt. Stattdessen werden alle vorherigen Daten ersetzt.

Wenn Sie Änderungen aus einer anderen Client-Datenmenge einfügen statt deren Daten einfach kopieren möchten, müssen Sie eine Provider-Komponente verwenden, Erstellen Sie einen Datenmengen-Provider wie im vorhergehenden Beispiel, verknüpfen Sie ihn diesmal jedoch mit der Zieldatenmenge. Statt die Eigenschaft Data zu kopieren, verwenden Sie die Methode 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;

Siehe auch