Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenbank wird nicht gespeichert (https://www.delphipraxis.net/211192-datenbank-wird-nicht-gespeichert.html)

skoschke 11. Aug 2022 06:31

Datenbank: SQLite • Version: ?? • Zugriff über: TFDQuery

Datenbank wird nicht gespeichert
 
Hallo,

ein seit Ewigkeiten funktionierendes Programm speichert plötzlich nicht mehr in einer Datenbank...

Ablauf grob:
- Datenbankverbindung herstellen
- FDQuery.FieldByName(...) := '...'
- FDQUERY.Post
- Datenbankverbindung trennen

Das hat bisher funktioniert, nun aber werden Änderungen nicht mehr gespeichert, ohne dass Laufzeitfehler auftreten.
In einer neuen leeren Datenbank wird der neue Inhalt gar nicht gespeichert.
Witzig aber, dass es nur eine bestimmte Tabelle betrifft, Änderungen in anderen Tabellen werden problemlos gespeichert!

Bei Programmstart wird die Datenbank ohne Probleme geöffnet und die Inhalte geladen ohne das es Fehler gibt.

Ich habe keine Ahnung wo ich ansetzen könnte!

Danke
Ciao
Stefan

Papaschlumpf73 11. Aug 2022 07:05

AW: Datenbank wird nicht gespeichert
 
Ich habe keine Ahnung von FD. Bei ADO gibt es für jede Query die Eigenschaft LockType. Wenn diese versehentlich auf ltBatchOptimistic gestellt wurde, erklärt es das Phänomen.

skoschke 11. Aug 2022 07:22

AW: Datenbank wird nicht gespeichert
 
LockType gibt es leider nicht :-(

Ciao
Stefan

haentschman 11. Aug 2022 07:23

AW: Datenbank wird nicht gespeichert
 
Moin...8-)
Zitat:

Datenbankverbindung herstellen
...richtige Datenbank? Connectionstring kontrolliert?

Programm speichert in DB1, das Admin Tool schaut auf DB2... :zwinker:

skoschke 11. Aug 2022 07:54

AW: Datenbank wird nicht gespeichert
 
Nein, das passt alles...

Aber beim Debuggen ist mir aufgefallen, dass bei der Erzeugung der TFDQuery.CachedUpdates = true gesetzt wird

Das sollte (angeblich) die Verarbeitung beschleunigen und hat bislang auch nie Probleme bereitet!

Begonnen wurde das Projekt vor zig Jahren, jetzt ist es Delphi 10.4.1, wurde da zwischenzeitlich was geändert?

Dass in einer Tabelle die Änderungen ankommen und in einer anderen nicht, könnte das mit den jeweiligen Datenmengen an Änderungen zusammenhängen?

Ciao
Stefan

hhcm 11. Aug 2022 09:33

AW: Datenbank wird nicht gespeichert
 
Also wenn da CachedUpdates eingschaltet sind, fehlt dann nicht was?

Delphi-Quellcode:
Query.ApplyUpdates;
Query.CommitUpdates;
Da reicht ein Post nicht.

haentschman 11. Aug 2022 10:16

AW: Datenbank wird nicht gespeichert
 
8-)
Zitat:

Query.ApplyUpdates;
...man wird alt. :oops: Früher hatte ich das oft verwendet...ich kam nicht mehr auf den Befehl. :wink:

:gruebel: Reicht nicht eigentlich Query.ApplyUpdates? ...ich kann nicht spicken. :stupid:

gespickt: :wink:
Ich hatte immer Connection.Commit was imho dem Query.CommitUpdates entspricht. :wink:

hhcm 11. Aug 2022 10:56

AW: Datenbank wird nicht gespeichert
 
Die Doku sagt, dass bei nachfahren von TFDRdbmsDataSet (also z.B TFDQuery) CommitUpdates aufgerufen werden sollte.
ApplyUpdates schmeisst keine Exception, d.h bei Fehlern wird also das ChangeLog des Datasets nicht gelöscht.

Ich wollte nur darauf hinweisen, dass Post bei CachedUpdates nicht ausreicht.

Der rest geht zu weit. Da lieber mal hier bzw. hier lesen.

Uwe Raabe 11. Aug 2022 10:58

AW: Datenbank wird nicht gespeichert
 
Zitat:

Zitat von haentschman (Beitrag 1510012)
Ich hatte immer Connection.Commit was imho dem Query.CommitUpdates entspricht. :wink:

Das ist nicht ganz richtig. Bei Connection.Commit wird die aktuelle Transaktion abgespeichert. Bei Query.CommitUpdates werden die aktuellen Änderungen (die Updates) aus dem Cache in den regulären Datenbestand übernommen.
Wenn AutoCommitUpdates = True ist, wird das beim ApplyUpdates gleich mit gemacht.

Näheres zu CachedUpdates hier: https://docwiki.embarcadero.com/RADS...ates_(FireDAC)

skoschke 11. Aug 2022 12:07

AW: Datenbank wird nicht gespeichert
 
OK, vielen Dank, dann ist die Ursache ja klar :-)

Ciao
Stefan


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