Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Update Datensatz im BetterAdoDataset

  Alt 22. Nov 2006, 07:58
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat