![]() |
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 |
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.
|
AW: Datenbank wird nicht gespeichert
LockType gibt es leider nicht :-(
Ciao Stefan |
AW: Datenbank wird nicht gespeichert
Moin...8-)
Zitat:
Programm speichert in DB1, das Admin Tool schaut auf DB2... :zwinker: |
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 |
AW: Datenbank wird nicht gespeichert
Also wenn da CachedUpdates eingschaltet sind, fehlt dann nicht was?
Delphi-Quellcode:
Da reicht ein Post nicht.
Query.ApplyUpdates;
Query.CommitUpdates; |
AW: Datenbank wird nicht gespeichert
8-)
Zitat:
: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: |
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 ![]() ![]() |
AW: Datenbank wird nicht gespeichert
Zitat:
Wenn AutoCommitUpdates = True ist, wird das beim ApplyUpdates gleich mit gemacht. Näheres zu CachedUpdates hier: ![]() |
AW: Datenbank wird nicht gespeichert
OK, vielen Dank, dann ist die Ursache ja klar :-)
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz