Was mir gerade noch einfällt:
Im Ausgangspost wird zuerst ein Append gemacht, Werte vergeben gespeichert. Dann der Satz wieder editiert und gespeichert.
Bei Append und anschließenden Post sind im Dataset in der Regel die technischen Schlüssel der Datenbank, die per Trigger, Sequence, AutoInc ... von der Datenbank vergeben werden nicht bekannt. Auch hier tritt der genannte Fehler auf.
Datenbank und Dataset können sich quasi nicht darauf einigen, welcher Datensatz zu ändern ist, da sie nicht gegenseitig über alle zur Identifizierung benötigten Informationen verfügen.
Erste Lösungsmöglichkeit wäre, die "zwischengeschobenen" Edits und Post zu entfernen.
Delphi-Quellcode:
Table1.Append;
Table1['Field1'] := 'Wert1';
Table1['Field2'] := 'Wert2';
Table1['Field3'] := 'Wert3';
Table1['Field4'] := 'Wert4';
Table1['Field5'] := 'Wert5';
Table1['Field6'] := 'Wert6';
usw....
// Erst dann, wenn alle Werte vergeben wurden.
try
Table1.Post;
except
end;
Eine Änderung des Datensatzes ist erst möglich, wenn er aus der Datenbank gelesen wurde, z. B. Table1.Refresh und Positionierung auf dem Satz.