MS Access: ID-Spalte vom Typ Autowert wird im Grid nicht richtig aktualisiert

07/11/2010 - 16:12 von Norbert Pürringer | Report spam
Hallo Leute,

ich verwende die ADO-Komponenten von Delphi 7: ADOTable und
ADOConnection. Wenn ich mit Insert und nachfolgendem Post einen
Datensatz in einer gewöhnlichen Access-Tabelle hinzufüge, enthàlt die
Autowert-ID-Spalte den Wert 0 für den neuen Datensatz im Grid.
Erwartet hàtte ich eine sinnvolle inkrementierte Zahl.

Das Schlimme ist jedoch, wenn ich versuche, den Datensatz mit der 0
als ID zu àndern.

Nach Edit und Post erhalte ich die Fehlermedlung:
Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige
Werte wurden seit dem letzten Lesen ggf. geàndert.

Was ist das Problem? Und wie kann ich es beheben?

Danke und Gruß,
Norbert
 

Lesen sie die antworten

#1 Peter Lange
07/11/2010 - 18:14 | Warnen spam
Am 07.11.2010 16:12, schrieb Norbert Pürringer:
Hallo Leute,



Hallo,

ich verwende die ADO-Komponenten von Delphi 7: ADOTable und
ADOConnection. Wenn ich mit Insert und nachfolgendem Post einen
Datensatz in einer gewöhnlichen Access-Tabelle hinzufüge, enthàlt die
Autowert-ID-Spalte den Wert 0 für den neuen Datensatz im Grid.
Erwartet hàtte ich eine sinnvolle inkrementierte Zahl.



Der Inhalt der Autowert-ID wird von MS-Access vergeben. Du musst also
nach dem POST die Daten neu einlesen, um den aktuell vergebenen Wert zu
erhalten.

Das Schlimme ist jedoch, wenn ich versuche, den Datensatz mit der 0
als ID zu àndern.

Nach Edit und Post erhalte ich die Fehlermedlung:
Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige
Werte wurden seit dem letzten Lesen ggf. geàndert.



Korrekt, da der Wert der Datensatz-ID in Deiner Anwendung nicht bekannt ist.

Was ist das Problem? Und wie kann ich es beheben?



s.o.
Generell sind Auto-Inc-Werte eine schöne Sache, um Datensàtzen eine
eindeutige ID zu geben. Aber es ist _immer_ Sache des verwendeten
Datenbanksystems diese Werte zu verwalten. Um also auf die ID
zurückzugreifen (bei Updates z.B.) muss zunàchst dieser Wert vom
Datenbanksystem gelesen werden.

hth
Peter

Ähnliche fragen