Hallo,
ich habe ein sehr seltsames Phänomen bei einem übernommen Programm. Der Programmierer hat dort folgendes Konstrukt programmiert:
Delphi-Quellcode:
Table1.Append;
Table1['Field1'] := 'Wert1';
Table1['Field2'] := 'Wert2';
Table1['Field3'] := 'Wert3';
Table1['Field4'] := 'Wert4';
try
Table1.Post;
except
end
Table1.Edit;
Table1['Field5'] := 'Wert5';
Table1['Field6'] := 'Wert6';
try
Table1.Post;
except
end
Table1.Edit;
usw....
Beim zweiten Post kommt immer die
Exception: Row cannot be located for updating. Some values may have been changed since it was last read
Oder auf Deutsch: die zum aktualisieren angegebene zeile wurde nicht gefunden: einige werte wurden seit dem letzten lesen geändert
Warum der Programmierer zwischen drin immer wieder Post/Edit aufruft muss ich noch ermitteln. Trotzdem möchte ich wissen, was diese Fehlermeldung hervorrufen kann. Table1 ist mit keinem Ereignis oder Datasource verbunden und es greift sicher auch kein anderer Prozess auf den Datensatz zu.
Ich habe folgendes versucht
- Ursprünglich war Table1 ein TAdoTable. Eine Änderung auf TAdoQuery brachte keine Abhilfe.
- Auch die mir genehmere Langschreibweise Table1.FieldByName('Field5').AsString
brachte nichts
- Sobald ich Table1['Field5'] := 'Wert5';
vor das erste Post schiebe, funktioniert alles
- Field5 ist ein einfaches nvarchar(30)-Feld wie die anderen auch
- Das Problem kann mit Datenbanken unterschiedlicher Installationen nachvollzogen werden, tritt aber immer mit demselben Feld auf
- Das Feld hat keinerlei Indizes, Einschränkungen oder sonstiges
Hat jemand eine Idee woran das liegen kann
Danke
Gerd