Anzeigen, welche Datensätze verändert wurden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Mithilfe einer Client-Datenmenge Aktualisierungen zwischenspeichern


Es kann sinnvoll sein, Benutzern ein Feedback anzubieten, während sie Änderungen an einer Client-Datenmenge vornehmen. Das ist vor allem dann der Fall, wenn Sie den Benutzern die Möglichkeit geben wollen, bestimmte Bearbeitungen rückgängig zu machen, indem sie beispielsweise auf eine entsprechende Schaltfläche klicken.

Um ein Feedback für die erfolgten Aktualisierungen bereitzustellen, erweisen sich die Methode UpdateStatus und die StatusFilter-Eigenschaften als recht praktisch:

UpdateStatus zeigt an, welche Aktualisierung für den aktuellen Datensatz stattgefunden hat. Möglich sind die folgenden Werte:

  • usUnmodified zeigt an, dass der aktuelle Datensatz nicht verändert wurde.
  • usModified zeigt an, dass der aktuelle Datensatz verändert wurde.
  • usInserted kennzeichnet einen Datensatz, der vom Benutzer eingefügt wurde.
  • usDeleted kennzeichnet einen Datensatz, der vom Benutzer gelöscht wurde.

StatusFilter steuert, welche Änderungstypen im Änderungsprotokoll angezeigt werden. StatusFilter bewirkt für zwischengespeicherte Datensätze Ähnliches wie Filter, die für normale Daten definiert wurden. StatusFilter ist ein Set, kann also eine beliebige Kombination der folgenden Werte enthalten:

  • usUnmodified kennzeichnet einen nicht veränderten Datensatz.
  • usModified kennzeichnet einen veränderten Datensatz.
  • usInserted kennzeichnet einen eingefügten Datensatz.
  • usDeleted kennzeichnet einen gelöschten Datensatz.

Standardmäßig ist das StatusFilter-Set gleich [usModified, usInserted, usUnmodified]. Sie können ihm usDeleted hinzufügen, um auch ein Feedback über gelöschte Datensätze zu bieten.

Anmerkung:  UpdateStatus und StatusFilter sind auch in den Ereignisbehandlungsroutinen BeforeUpdateRecord und OnReconcileError sehr hilfreich einzusetzen. Weitere Informationen zu BeforeUpdateRecord finden Sie unter Aktualisierungsfehler korrigieren.

Das folgende Beispiel zeigt, wie man mit Hilfe der Methode UpdateStatus ein Feedback zum Aktualisierungsstatus von Datensätzen bereitstellt. Dabei wird vorausgesetzt, dass Sie die Eigenschaft StatusFilter so abgeändert haben, dass diese auch usDeleted enthält, damit gelöschte Datensätze in der Datenmenge sichtbar bleiben. Darüber hinaus wird angenommen, dass Sie der Datenmenge ein berechnetes Feld namens Status hinzugefügt haben.



 procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
 begin
   with ClientDataSet1 do begin
     case UpdateStatus of
       usUnmodified: FieldByName('Status').AsString := '';
       usModified: FieldByName('Status').AsString := 'M';
       usInserted: FieldByName('Status').AsString := 'I';
       usDeleted: FieldByName('Status').AsString := 'D';
     end;
   end;
 end;



 void __fastcall TForm1::ClientDataSet1CalcFields(TDataSet *DataSet)
 {
   switch (DataSet->UpdateStatus())
   {
     case usUnmodified:
       ClientDataSet1Status->Value = NULL; break;
     case usModified:
       ClientDataSet1Status->Value = "M"; break;
     case usInserted:
       ClientDataSet1Status->Value = "I"; break;
     case usDeleted:
       ClientDataSet1Status->Value = "D"; break;
   }
 }



Siehe auch