Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

TAdoQuery Row cannot be located .. bei post

  Alt 29. Sep 2017, 01:31
Datenbank: Mssql • Version: 2008 • Zugriff über: TAdo
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
  Mit Zitat antworten Zitat