Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TClientDataSet.UndoLastChange - Reihenfolge der Änderungen einer Zeile im Delta? (https://www.delphipraxis.net/182370-tclientdataset-undolastchange-reihenfolge-der-aenderungen-einer-zeile-im-delta.html)

PeterPetersen 20. Okt 2014 08:50

Delphi-Version: XE5

TClientDataSet.UndoLastChange - Reihenfolge der Änderungen einer Zeile im Delta?
 
Moin!

Ich habe eine Verständnisfrage zur Funktionsweise von "TClientDataSet.UndoLastChange" und bin mir sicher, ihr könnt mir auf die Sprünge helfen.

Angenommen ich habe einen einfachen Datensatz mit zwei Spalten "A" und "B".

Ändere ich in der aktuellen Zeile den Wert der Spalte "A", so wird "TClientDataSet.Delta" ja aus zwei Zeilen bestehen; eine mit dem unveränderten Datensatz und eine mit dem neuen Wert in "A".

Ändere ich nun auch den Wert in "B" der selben Zeile, so bleibt es in "TClientDataSet.Delta" bei den zwei Zeilen - lediglich der neue Wert für "B" ist dort ebenfalls eingetragen.


Wenn ich nun "TClientDataSet.UndoLastChange" (bzw. "IDSCursor.UndoLastChange") aufrufen, wird die Änderung in "B" wieder zurückgenommen und das Delta zeigt mir wieder nur die Änderung in "A".

Soweit so gut - was ich nicht erkennen kann, ist die Systematik, die die Änderungsreihenfolge innerhalb einer Datenzeile (also: "erst 'A' dann 'B'") wiederspiegelt.

Woran erkennt "TClientDataSet.UndoLastChange", was die letzte Änderung in einer bereits veränderten Datenzeile ist? Ist diese Info auch im Delta hinterlegt?

Danke & Grüße
Petersen

PeterPetersen 22. Okt 2014 14:26

AW: TClientDataSet.UndoLastChange - Reihenfolge der Änderungen einer Zeile im Delta?
 
... wenn ich mir den Quelltext der midas.dll ansehe, scheint mir die Funktion "DSBASE::GetDelta" bzw. "DSLOG::CompactLog" genau die Informationen aus dem Delta zu entfernen, die ich suche ;)

Merke: Changelog <> Delta :oops:

Nun hatte ich die vage Hoffnung, über "DataSnap.DSIntf.CreateDbClientObject" mir Zugriff auf die Funktionen von "DSLOG" zu verschaffen - so wie es ja für "DSBASE" oder "DSCURSOR" gemacht wird. Aber ohne Anpassen des Quelltextes der midas.dll wird das wohl nicht gehen. :pale:

Gibt es noch eine andere Möglichkeit, direkt lesend auf das Changelog eines TClientDataSet zuzugreifen?

*Hilfe*

Danke & Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz