Hallo.
Ich bin auch gerade über diesen Fehler gestolpert und hatte eine Lösung gesucht. Dann fiel es mir aber wieder ein:
Bei ADO/Access werden beim Post alle Datenfelder verglichen. Die interne SQL-Anweisung muss man sich wie folgt vorstellen
"UPDATE ... WHERE FELD1=Wert2 and FELD2=Wert2...". Erlaubt sind bei Jet 3.51 40 Felder, bei Jet 4.0 99 Felder. Siehe auch
support.microsoft.com/kb/192716/
Im Delphi kann man 'Update Criteria' überschreiben, um nur PrimaryKey zu vergleichen. Allerdings nur temporär. Deshalb zum Beispiel in Dataset.BeforePost:
uses AdoInt;
procedure TMyDataModule.BeforePostSetUpdateCriteria(DataSet: TDataSet);
begin
TADODataSet(DataSet).Properties['Update Criteria'].Value := adCriteriaKey;
end;
Gruß, Harald
--
omdn.officemanager.de/