Delta-Pakete vor dem Aktualisieren der Datenbank bearbeiten
Nach oben zu Auf Aktualisierungsanforderungen des Client reagieren
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();
}
}