Hallo,
der von Dir beschriebene Fehler passiert so:
ADO speichert die Zeile und erwartet vom Server eine Meldung wie "1 Zeile verändert". Aus irgend einem Grund kommt jedoch etwas wie "0 Zeilen verändert" zurück.
Das kann mehrere Ursachen haben:
A Auf der Tabelle ist ein Trigger, der blöderweise auch so eine Meldung liefert.
B Jemand anderes hat den Datensatz verändert.
(A) kannst Du einfach testen, indem Du das
DB-Schema analysierst.
(B) kannst Du umgehen, indem Du die UPDATE-Anweisung in etwa so programmierst:
SQL-Code:
UPDATE Tabelle
SET Feld1=1,
Feld2=...
WHERE PrimaryKeyField = 123
Von Hause aus macht
ADO nämlich so etwas:
SQL-Code:
UPDATE Tabelle
SET Feld1=1,
Feld2=...
WHERE PrimaryKeyField = 123
AND Feld1= <AlterWertVonFeld1>
AND Feld2= <AlterWertVonFeld2>
Die alten Werte des Datensatzes hat sich
ADO beim Einlesen der Tabelle gemerkt. Von einer zwischenzeitlichen Änderung der Feldinhalte durch eine andere Anwendung bekommt
ADO nix mit.
Gott-Sei-Dank verwendest Du das TBetterADODataset. Soweit ich weiss, geht das damit.