Delta-Pakete vor dem Aktualisieren der Datenbank bearbeiten
Nach oben zu Provider-Komponenten - Index
Bevor ein Datenmengen-Provider Aktualisierungen in die Datenbank einträgt, generiert er das Ereignis OnUpdateData. Der entsprechenden Behandlungsroutine wird eine Kopie des Delta-Pakets als Parameter übergeben. Dabei handelt es sich um eine Client-Datenmenge.
In der Behandlungsroutine für OnUpdateData können Sie alle Eigenschaften und Methoden der Client-Datenmenge verwenden, um das Delta-Paket zu bearbeiten, bevor es in die Datenmenge geschrieben wird. Eine besonders nützliche Eigenschaft ist UpdateStatus. Sie gibt an, auf welche Weise sich der aktuelle Datensatz im Delta-Paket (im Vergleich zur Datenbank) geändert hat. In der folgenden Tabelle sind die möglichen Werte für UpdateStatus aufgeführt:
Werte für UpdateStatus:
| Wert | Beschreibung |
|---|---|
|
usUnmodified |
Der Datensatz wurde nicht geändert. |
|
usModified |
Der Datensatz wurde geändert. |
|
usInserted |
Der Datensatz wurde eingefügt. |
|
usDeleted |
Der Datensatz wurde gelöscht. |
In dem folgenden Beispiel weist die Behandlungsroutine für OnUpdateData jedem Datensatz, der neu in die Datenbank eingefügt wird, das aktuelle Datum zu:
procedure TMyDataModule1.Provider1UpdateData(Sender: TObject; DataSet: TCustomClientDataSet); begin with DataSet do begin First; while not Eof do begin if UpdateStatus = usInserted then begin Edit; FieldByName('DateCreated').AsDateTime := Date; Post; end; Next; end; end;
void __fastcall TMyDataModule1::Provider1UpdateData(TObject *Sender, TCustomClientDataSet *DataSet) { DataSet->First(); while (!DataSet->Eof) { if (DataSet->UpdateStatus == usInserted) { DataSet->Edit(); DataSet->FieldByName("DateCreated")->AsDateTime = Date(); DataSet->Post(); } DataSet->Next(); } }