AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datenbank wird nicht gespeichert
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank wird nicht gespeichert

Ein Thema von skoschke · begonnen am 11. Aug 2022 · letzter Beitrag vom 11. Aug 2022
Antwort Antwort
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#1

Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 07:31
Datenbank: SQLite • Version: ?? • Zugriff über: TFDQuery
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
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 08:05
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.

Geändert von Papaschlumpf73 (11. Aug 2022 um 08:09 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 08:22
LockType gibt es leider nicht

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 08:23
Moin...
Zitat:
Datenbankverbindung herstellen
...richtige Datenbank? Connectionstring kontrolliert?

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

Geändert von haentschman (11. Aug 2022 um 08:26 Uhr)
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 08:54
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
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 10:33
Also wenn da CachedUpdates eingschaltet sind, fehlt dann nicht was?

Delphi-Quellcode:
Query.ApplyUpdates;
Query.CommitUpdates;
Da reicht ein Post nicht.
Chris
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 11:16

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

Reicht nicht eigentlich Query.ApplyUpdates? ...ich kann nicht spicken.

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

Geändert von haentschman (11. Aug 2022 um 11:21 Uhr)
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 11:56
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.
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#9

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 11:58
Ich hatte immer Connection.Commit was imho dem Query.CommitUpdates entspricht.
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)
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Datenbank wird nicht gespeichert

  Alt 11. Aug 2022, 13:07
OK, vielen Dank, dann ist die Ursache ja klar

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 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