Entwickler-Ecke
Datenbanken - Probleme mit FireDac: Update nicht möglich
UliTs - Mi 28.09.16 13:50
Titel: Probleme mit FireDac: Update nicht möglich
Hallo allerseits,
ich schreibe gerade ein Delphiprogramm mit Hilfe von Firedac. Die Datenbank ist ADS und die Datenstruktur DBF/NTX in einem DataDictionary zusammengefasst.
Bei einer Tabelle kann ich in meinem Programm keine Änderungen vornehmen. Es kommt beim Post die Fehlermeldung:
[FireDAC][DApt]-400. Update-Anweisung updated [0] anstelle von [1] Datensatz. Mögliche Ursachen: Aktualisierungstabelle hat keinen Primärschlüssel oder Zeilenbezeichner, Datensatz wurde von einem anderen Benutzer geändert/gelöscht.
Den Datensatz gibt es definitiv. Hat jemand eine Idee, was falsch sein könnte?
UliTs - Do 29.09.16 22:20
Weiss jemand, wo man sonst Hilfe bei diesem Problem bekommen kann?
Delete - Fr 30.09.16 06:44
- Nachträglich durch die Entwickler-Ecke gelöscht -
UliTs - Fr 30.09.16 08:41
Hallo Frühlingsrolle,
vielen Dank für Deine Antwort. Hier mein Postaufruf (ist ein Testaufruf):
Delphi-Quelltext
1: 2: 3:
| FDQueryEditKunde.Edit; FDQueryEditKundeKDNNAME.Value := 'OHO'; FDQueryEditKunde.Post; |
Das Anlegen eines Primarykeys direkt in der Tabelle ist sicher eine elegante und vermutlich auch die beste Lösung. Leider handelt es sich bei den Tabellen aber um DBF-NTX Tabellen und zu allem Überfluss darf ich die Struktur bei diesen auch nicht ändern ...
Gibt es eine andere Möglichkeit, wie ich FireDAC einen Primary Key mitteilen kann?
Uli
P.S.
Wie hast Du die SQL-Anweisung so schön formatiert? Geht das auch mit Delphi-Anweisungen? -> Danke, JoelH
Delete - Fr 30.09.16 10:26
- Nachträglich durch die Entwickler-Ecke gelöscht -
UliTs - Fr 30.09.16 11:46
Danke an beide :-) .
Frühlingsrolle, der Quelltext war so schon richtig, da FDQueryEditKundeKDNNAME ein Feld aus FDQueryEditKunde ist. Die Methode FDQueryEditKunde.FieldsByName gibt es bei FireDac nicht.
Aber der Hinweis auf die Felder hat mich zum Ziel :idea: gebracht:
Da gibt es die Eigenschaft "ProviderFlags". Und da habe ich bei allen Feldern, die nicht zum Schlüssel gehören, pfInWhere auf False gesetzt. Danach hat es geklappt! :!: :D
Eventuell geht es noch eleganter mit pfInKey. Dafür muß aber im DatenmengenProvider der UpdateMode von upWhereAll auf upWhereKeyOnly geändert werden. Da ich bisher noch nicht mit dem DatenmengenProvider gearbeitet habe, weiss ich noch nicht, wie ich diesen einbinden muß.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!