AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC Merkwürdigkeiten

FireDAC Merkwürdigkeiten

Ein Thema von haentschman · begonnen am 21. Mai 2021 · letzter Beitrag vom 26. Mai 2021
Antwort Antwort
Benutzerbild von haentschman
haentschman

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

FireDAC Merkwürdigkeiten

  Alt 21. Mai 2021, 11:05
Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC
Hallöle...

Wieder was zum Schmunzeln...oder auch nicht.

Wie geht das?
Zitat:
compiled with : Delphi 10.1 Berlin
madExcept version : 5.1.0
callstack crc : $172ecbca, $cf2706b0, $b3928f31
exception number : 1
exception class : EDatabaseError
exception message : FDQery: Datenmenge weder im Editier- noch im Einfügemodus.

thread $47e8:
00789565 +0c9 SEAM.exe Data.DB 3268 +7 DatabaseError
007a05e5 +035 SEAM.exe Data.DB 13661 +1 TDataSet.UpdateRecord
007a163a +006 SEAM.exe Data.DB 14364 +1 TDataSet.Post
0082826d +029 SEAM.exe FireDAC.Comp.DataSet 5006 +6 TFDDataSet.Post
036895f0 +0cc SEAM.exe DMEdit 4034 +7 TDM.FillLastEmployee
036a46d9 +0c1 SEAM.exe DMEdit 7242 +6 TDM.FDQTerminAfterPost
007a273d +015 SEAM.exe Data.DB 15019 +1 TDataSet.DoAfterPost
007a16a9 +075 SEAM.exe Data.DB 14374 +11 TDataSet.Post
0082826d +029 SEAM.exe FireDAC.Comp.DataSet 5006 +6 TFDDataSet.Post
007a247d +041 SEAM.exe Data.DB 14901 +7 TDataSet.CheckBrowseMode
Delphi-Quellcode:
procedure TDM.FillLastEmployee(ID: Integer; Employee, TerminDate: string);
begin
  FDQuery.Locate('idBelKopf', ID, []);
  if FDQuery.State = dsBrowse then
  begin
    FDQuery.Edit;
    FDQuery.FieldByName('Monteur').AsString := Employee;
    FDQuery.FieldByName('MonPlan').AsString := TerminDate;
    FDQuery.Post; // <- Zeile 4034
  end;
end;
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#2

AW: FireDAC Merkwürdigkeiten

  Alt 21. Mai 2021, 11:15
Datenbankverbindung ist ReadOnly, FDQuery ist ReadOnly oder enthält eine nicht editierbare Datenmenge (z. B: eine Select über mehrere Tabellen), ...?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: FireDAC Merkwürdigkeiten

  Alt 21. Mai 2021, 11:37
Zitat:
Datenbankverbindung ist ReadOnly, FDQuery ist ReadOnly oder enthält eine nicht editierbare Datenmenge (z. B: eine Select über mehrere Tabellen), ...?
PS: das funktioniert 100x am Tag

ReadOnly: False
QueryReadOnly: False
Join: no

Wir haben teilweise richtige Netzwerkprobleme...kann das damit zusammenhängen?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#4

AW: FireDAC Merkwürdigkeiten

  Alt 21. Mai 2021, 11:40
Ja!

Verbindung geht zwischendurch flöten, der Server merkt es und die Datenbank macht ein Rollback.

Beim Post gibt es dann eine neue Datenbankverbindung, eine neu Transaktion und das Zusammenspiel passt nicht mehr.

Strubbel in beliebiger Kombination ist in so 'nem Fall möglich.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.023 Beiträge
 
Delphi 12 Athens
 
#5

AW: FireDAC Merkwürdigkeiten

  Alt 22. Mai 2021, 17:07
Und wie geht man mit sowas um?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#6

AW: FireDAC Merkwürdigkeiten

  Alt 22. Mai 2021, 17:40
Für eine stabile Netzwerkverbindung sorgen.

Ggfls. TimeOut-Einstellungen auf beiden Seiten anpassen.

Ursachenforschung betreiben:

Z. B. per Ping prüfen, wie die Antwortzeiten zwischen Client und Server sind.
"Unnormal hoch"? Ursache suchen und beseitigen.

Per Traceroute prüfen, ob eventuell ein Problem "irgendwo auf der Strecke zwischen Client und Server" vorliegt. Router und oder Switch zicken rum, sind (halbwegs) defekt, Kabelstecker locker, Wackelkontakt durch Kabelbruch, ...

Prüfen, ob es ausschließlich Probleme bei der Kommunikation zwischen Datenbankserver und Datenbankclient sind, oder eher grundsätzliche Probleme vorliegen.

Eigentlich gibt es da auf technischer Ebene eine Unmenge an Problemen, die man als Entwickler eher nicht beeinflussen kann. Da müssen dann die entsprechenden Admins und / oder Techniker ran.

Im Programm dafür sorgen, dass auch bei solchen Problemen ein konsistenter Datenbestand sichergestellt ist.

Reparaturroutinen à la: Klapptnicht, dann einfach nochmal probieren, nur dann, wenn es wirklich keine andere Lösungsmöglichkeit gibt. Aber das ist eher nicht empfehlenswert, insbesondere nicht bei Datenbanken, bei HTTP- oder FTP-Abfragen, lesen von Dateien "irgendwo auf 'nem Netzlaufwerk", ... kann man sowas eventuell machen.

Geändert von Delphi.Narium (22. Mai 2021 um 18:24 Uhr) Grund: Schreibfehler ...
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:10 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 by Thomas Breitkreuz