ZEOS 7 ändert alle Datensätze gleichzeitig

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Andrewi
Beiträge: 18
Registriert: Fr 8. Mär 2013, 16:07
OS, Lazarus, FPC: MINT 21, Laz: 2.2.0, FPC: 3.2.2
CPU-Target: x64
Wohnort: Hzgt. Lauenburg

ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von Andrewi »

Hallo zusammen!
Ich fange gerade an, mich mit ZEOS und SQLite3 zu befassen. Dazu habe ich eine Datenbank mit 1 Tabelle erstellt und ein kleines Projekt geschrieben. Die Neueingabe von Daten funktioniert einwandfrei. Wenn ich jedoch einen Datensatz ändere, werden alle anderen Datensätze ebenfalls geändert und ich bekomme eine dazu passende EZSQLException:
"... record(s) updated. Only 1 record should have been updated."
Bei ... steht dann die Anzahl der vorhandenen Datensätze.
Zum Ändern habe ich die Tabelle über den Navigator in den EDIT-Modus gesetzt und anschließend über den Navigator die Änderung gespeichert.

System:
Win7, Lazarus 1.04, ZEOS 7.03 Stable
Danke für Ideen und Hinweise

André
Ein Mensch meint gläubig wie ein Kind, dass alle Menschen Menschen sind. (Eugen Roth)

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von Aliobaba »

... wenn Du uns hier das SQl-Statement nicht verraten möchtest, wird man kaum helfen können.
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von MmVisual »

Vermutlich hast Du ein TZUpdateSQL verwendet und dort einen falschen SQL Script drin.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Andrewi
Beiträge: 18
Registriert: Fr 8. Mär 2013, 16:07
OS, Lazarus, FPC: MINT 21, Laz: 2.2.0, FPC: 3.2.2
CPU-Target: x64
Wohnort: Hzgt. Lauenburg

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von Andrewi »

Hallo Aliobaba!
Vielleicht war ich zu blauäugig. Ich habe früher mit D6Pro und der BDE gearbeitet. Im ZEOS-Projekt habe ich gelesen, daß man versucht die BDE nachzubauen. Dementsprechend habe keine SQL-Anweisungen eingebaut. Ich war davon ausgegangen, daß die Grundfunktionen "Einfügen", "Löschen" und "Ändern" ausschließlich über den Code des Navigator gesteuert werden. Wie bereits gesagt, die beiden ersten Funktionen funzen auch. Lediglich das Ändern haut nicht hin, :(
Gruß André
Ein Mensch meint gläubig wie ein Kind, dass alle Menschen Menschen sind. (Eugen Roth)

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von hde »

Andrewi hat geschrieben:ie beiden ersten Funktionen funzen auch. Lediglich das Ändern haut nicht hin,
doch, das funktioniert schon, dein Fehler liegt wo anders,
Aber aufgrund deiner vagen Beschreibung kann man dir wohl nicht helfen :wink:
hde

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von MmVisual »

Wenn Du eine Tabelle hast, in der alle Zeilen die gleichen Daten drin haben:

Feld1 | Feld2
hhh | jjj
hhh | jjj
hhh | jjj

Und Du willst jetzt eine Zeile ändern, dann geht das nicht!
Denn ein UPDATE hat immer ein WHERE mit Feld1="hhh" AND Feld2="jjj". Somit werden immer alle Zeilen geändert die dem WHERE entsprechen.

Abhilfe: Mache in die Tabelle ein Feld "ID" vom Typ AutoIncrement (INTEGER PRIMARY KEY), dann steht dort immer eine eindeutige Zahl drin und der UPDATE kann per WHERE exakt diese eine Datenzeile ansprechen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Andrewi
Beiträge: 18
Registriert: Fr 8. Mär 2013, 16:07
OS, Lazarus, FPC: MINT 21, Laz: 2.2.0, FPC: 3.2.2
CPU-Target: x64
Wohnort: Hzgt. Lauenburg

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von Andrewi »

Hallo MmVisual!

Ein ID-Feld war vorhanden, alledings hatte ich dort nur PRIMARY KEY und nicht INTEGER PRIMARY KEY eingestellt. Nachdem ich das geändert hatte fuzte es.
Allerdings habe ich trotzdem ein Verständnisproblem. Die Datensätze hatten zwar alle in ID ein leeres Feld, aber die restlichen Felder hatten unterschiedliche Einträge. Heißt das im Umkehrschluß, daß nur das erste Feld auf Unterschiede abgeprüft wird, denn nach deiner Beschreibung würden ja alle Felder in der WHERE-Klausel überprüft und UPDATE hätte dann trotzdem den geänderten DS eindeutig finden müssen.

Grüße und vielen Dank für eure Hilfe

André
Ein Mensch meint gläubig wie ein Kind, dass alle Menschen Menschen sind. (Eugen Roth)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von af0815 »

Es wird nur der primäre Key verwendet. Aus diesem Gründe sollte es Unique sein und sinnvoller weise Not Null. Ob die Restlichen Felder unterschiedlich sind oder nicht ist uninteressant. Der Key kann auch zusammengesetzt sein. Nur erwarte von der Automatik für die Erstellung der Statements keine Heldentaten. Wenn du es komplexer willst, dann musst du die Update, delete,... Selbst sinnvoll erstellen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von MmVisual »

af0815 hat geschrieben:Wenn du es komplexer willst, dann musst du die Update, delete,... Selbst sinnvoll erstellen.
Dafür gibt es TZUpdateSQL
EleLa - Elektronik Lagerverwaltung - www.elela.de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von hde »

mMn nicht gnaz richtig. Wozu gibt es das Property WhereMode?
hde

Andrewi
Beiträge: 18
Registriert: Fr 8. Mär 2013, 16:07
OS, Lazarus, FPC: MINT 21, Laz: 2.2.0, FPC: 3.2.2
CPU-Target: x64
Wohnort: Hzgt. Lauenburg

Re: ZEOS 7 ändert alle Datensätze gleichzeitig

Beitrag von Andrewi »

Hallo zusammen!
Jetzt habe ich es auch verstanden. Nochmals vielen Dank für eure Hilfe! :D
Grüße André
Ein Mensch meint gläubig wie ein Kind, dass alle Menschen Menschen sind. (Eugen Roth)

Antworten