Delphi-Quellcode:
value := DatasetArtikel.Fields[2].OldValue; //gibt blueblue zurück
value := DatasetArtikel.Fields[2].Value; //gibt blueblue zurück
value := DatasetArtikel.Fields[2].NewValue; //gibt blueblue zurück
Wie kann ich das realisieren das Ich ein Dataset erhalte nur mit den Änderungen und dieses in einer Schleife durchlaufe und die neuen Werte rausfilter?
OldValue sollte nur für den aktuellen Datensatz verfügar sein.
Es wird nicht für alle Datensätze der "alte" Zustand gespeichert. Was ist überhaupt alt? Nja, wenn, dann müsstest du das wohl selber speichern, in eine/mehreren zusätzlichen Spalten oder woanders.
Und das OldValue könnte auch nur während des Inserts/Edits gültig/aktuell sein, bis hin zum nächsten Post/Cancel.
Ob der OldValue auch länger gespeihert wird, ist nicht unbedingt/immer gegeben.
Zitat von
OH:
Sobald die Datensätze erfolgreich eingetragen wurden, kann der ursprüngliche Feldwert nicht mehr ermittelt werden.
Anmerkung: Die Eigenschaft OldValue kann nur verwendet werden, wenn mit der Komponente TClientDataSet auf die Daten zugegriffen wird oder zwischengespeicherte Aktualisierungen genutzt werden.
Eventuell klingt TClientDataSet.LogChanges nach einer praktischen Sache?