AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zugriff mit FDConnection / FDQuery --> ODBC --> FireBird Daten Änderung nicht möglic
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff mit FDConnection / FDQuery --> ODBC --> FireBird Daten Änderung nicht möglic

Ein Thema von fisipjm · begonnen am 13. Apr 2022 · letzter Beitrag vom 14. Apr 2022
Antwort Antwort
fisipjm

Registriert seit: 28. Okt 2013
334 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zugriff mit FDConnection / FDQuery --> ODBC --> FireBird Daten Änderung nicht mög

  Alt 13. Apr 2022, 12:32
Schau mal im ODBC-Treiber nach, ob er überhaupt lesen und schreiben zulässt.
Ebenso in den Optionen der Datenbankverbindung und/oder der Query.
Ja ja, schreiben geht. Das ist ja der Witz, da aktuell keine Transaktionskontrolle drin ist, bekomm ich einen Fehler hab am Ende aber den wert trotzdem drin stehen.

Wenn ich mir nach dem Select die Struktur in der Query anschaue, dann sehe ich keinen Primärschlüssel, obwohl in der DB einer definiert ist. Könnte das das Problem sein? Wisst ihr wie ich herausfinden kann ob das ein ODBC oder ein FireDac thema ist?

Ich hab gerade erst alles umgeschrieben, es war vorher mit einem Update statement gelöst, aber das war nicht mehr Dynamisch genug und hat den Quellcode sehr schlecht lesbar gemacht. Ich würde gerne die edit/post Logik beibehlaten.
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Zugriff mit FDConnection / FDQuery --> ODBC --> FireBird Daten Änderung nicht mög

  Alt 13. Apr 2022, 14:58
Zuerst: Weder mit FireBird noch mit ODBC noch mit einer Kombination aus beidem (und dabei war/ist es egal, welche Datenbankkomponenten ich seitens Delphi verwende), hatte ich bisher Probleme. Es liegt für meine Begriffe grundsätzlich weder an dem einen, noch an dem anderen, allenfalls an der Art der Verwendung. Und die ist hier nicht näher beschrieben, so dass es unmöglich ist zu erkennen, wo das Problem liegen könnte.

Man muss bei der Konfiguration schon darauf achten, dass man nicht nur Lese- sondern auch Schreibrechte hat.

Die Edit-/Post-Variante ist die eher fehleranfällige. Letztlich muss auch bei deren Verwendung "irgendwo in der Datenbankschnittstelle" ein entsprechendes Update-Statement generiert werden, welches dann an die Datenbank geschickt und dort verarbeitet wird.

Hab' in einem meiner Programme auch so 'ne Schleife mit Edit+Post. Und wenn ich in der Monitoringtabelle von FireBird nachschaue, was da so passiert, sehe ich ein Select und eine ganze Reihe von Update-Statements.

Eine eher blöde Idee:

Dein Select und Edit/Post funktioniert beim ersten Mal (was Du an den geänderten Daten in der DB sehen kannst), aber in der weiteren Verarbeitung erkennt "irgendwerwieoderwas" in der Kommunikation zwischen Deinem Programm und der Datenbank, dass der Satz geändert wurde und weiß nicht, dass der Satz gerade von "irgendwerwieoderwas" geändert wurde und bemängelt die eigene Änderung als nicht erfolgreich. Wäre eher schräg, aber ist eventuell nicht auszuschließen.

Auch wenn Select + Update etwas aufwändiger zu programmieren ist, als Edit + Post, könnte das zusammen mit 'ner vernünftigen Transaktionsklammer durchaus die sinnvollere Alternative sein. Eventuell funktuionieren aber auch Edit + Post, wenn da 'ne Transaktionsklammer drum ist. Ohne sinnvolles Transaktionshandling ist das sowieso eher so 'ner Art Lottospiel.

Dann schau bitte mal hier, ab Du das eventuell was brauchbares findest: https://stackoverflow.com/questions/...ving-strangely
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Zugriff mit FDConnection / FDQuery --> ODBC --> FireBird Daten Änderung nicht mög

  Alt 14. Apr 2022, 16:57
Wenn ich mir nach dem Select die Struktur in der Query anschaue, dann sehe ich keinen Primärschlüssel, obwohl in der DB einer definiert ist.
Das ist definitiv zumindest ein Hinderungsgrund für das Update. Es gibt mindestens zwei Möglichkeiten das mit Bordmitteln zu lösen:

1. Du sorgst dafür, dass das Feld für den Primärschlüssel auch als solches definiert ist. Am Einfachsten legst du das Feld statisch an und setzt in dessen ProviderFlags das pfInKey auf True. Damit die übrigen Felder dynamisch angelegt werden, musst du noch in der Query in FieldOptions das AutoCreateMode auf acCombineAlways setzen.

2. Du änderst in der Query in den UpdateOptions den UpdateMode auf upWhereAll.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 19:28 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