Auch wenn's jetzt klappt.
Die folgenden Zeilen hast du falsch verstanden:
sabi_14 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3:
| dbid:=tblNotiz.FieldByName('ID').AsInteger; id:=MaxIntValue(dbid)+ 1; tblNotiz.FieldByName('ID').asInteger:=id; | |
Du nimmst die ID des aktuellen Datensatzes und keinesfalls die größte.
Wenn du die aktuelle ID jetzt um 1 erhöhst, dann kann es natürlich sein, dass diese schon vergeben ist.
Verwende für sowas, wenn möglich, eine auto-increment Spalte. Wenn das die Datenbank nicht unterstützt gibt es vieleicht trotzdem datenbankseitig Hilfen (bei Oracle z.B. Trigger und Sequenzen).
Beim Anlegen eines neuen Datensatzes die höchste ID zu holen, 1 zu addieren und den neuen Datensatz mit der ID anlegen sollte zwar in den meisten Fällen funktionieren, wenn du dann jedoch mit mehreren Nutzern gleichzeitig arbeitest könnte es vorkommen, dass beide die selbe ID zugewiesen bekommen und dann kann einer der beiden nicht speichern.
Um das ganze trotzdem über die größte ID zu machen müßtest du ein SQL wie das folgende nutzen:
SQL-Anweisung
1:
| select max(id) from notiz |