Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten (https://www.delphipraxis.net/198777-clientdataset-savetofile-loescht-nicht-die-geaenderten-daten.html)

juergen 28. Nov 2018 23:22

Datenbank: XML • Version: 1.0 • Zugriff über: ClientDataSet

ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
Hallo zusammen,

ich beschäftige mich gerade mit ClientDataSet in Verbindung mit XML.
Ich nutze keinen Provider. Ich lese eine XML-Datei über CDS.LoadFromFile() ein. Es ist eine Datasource und ein DB-Grid angebunden nebst einem DB-Navigator.
Wenn ich nun Daten im Grid ändere werden die geänderten Daten auch durch CDS.SaveToFile() in die XML-Datei gespeichert. Allerdings bleibt der alte "Datensatz" in der XML-Datei vorhanden!


Kennt jemand dieses Problem und gibt es da eine Möglichkeit dass im XML-File *nur* die Daten stehen die auch in meinem Grid zu sehen sind?

Vielen Dank schon mal vorab! :dp:

Uwe Raabe 28. Nov 2018 23:31

AW: ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
Ruf vor dem Speichern mal ein
Delphi-Quellcode:
MergeChangeLog
auf.

Schokohase 28. Nov 2018 23:33

AW: ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
Da Delphi-Referenz durchsuchenDatasnap.DBClient.TCustomClientDataSet.LogChanges ausschalten

juergen 28. Nov 2018 23:44

AW: ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
@Uwe Raabe,
@Schokohase,

supi, ihr beide seid der Hammer.
Vielen Dank. Ich hatte ziemlich lange gesucht, war mir aber einer solche Funktion gar nicht bewusst.

Vielen Dank und eine Gute N8!
:dp:

TigerLilly 29. Nov 2018 06:58

AW: ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
Ist da nicht
Code:
ApplyUpdates
das Mittel der Wahl?

Schokohase 29. Nov 2018 07:14

AW: ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
Ist doch dokumentiert:

Datasnap.DBClient.TCustomClientDataSet.ApplyUpdate s
Zitat:

Sendet alle aktualisierten, eingefügten und gelöschten Datensätze der Client-Datenmenge an den Provider, damit die Änderungen in die Datenbank geschrieben werden.
Der TE hat aber gar keinen Provider wo diese Änderungen hin könnten.

Datasnap.DBClient.TCustomClientDataSet.LogChanges

Datasnap.DBClient.TCustomClientDataSet.MergeChange Log

TigerLilly 29. Nov 2018 07:25

AW: ClientDataSet.SaveToFile() "löscht" nicht die geänderten Daten
 
:shock: Du hast recht + ich habe weniger Recht. :- /

Zitat:

"In dateiorientierten Anwendungen muss MergeChangeLog explizit aufgerufen werden, wenn LogChanges den Wert true hat."
http://docwiki.embarcadero.com/Libra...MergeChangeLog


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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