Chyba "Příznak BOF nebo EOF má hodnotu True nebo byl odstraněn aktuální záznam. Požadovaná operace vyžaduje aktuální záznam"

16. 3. 2018, Vladimír Klaus, přečteno 124x

Delphi
MS Access
SQL

U jednoho projektu v Delphi dochází (ale pouze při debuggování) k níže uvedené chybě a zatím se mi ji nepodařilo korektně vyřešit. Zobrazování této výjimky jsem tedy alespoň vypnul. Návody dostupné na internetu jsou hodně staré nebo nedávají v tomto případě smysl. 

Chyba "Příznak BOF nebo EOF má hodnotu True nebo byl odstraněn aktuální záznam. Požadovaná operace vyžaduje aktuální záznam", obr. 1

Project xxxxx.exe raised exception class EOleException with message 'Příznak BOF nebo EOF má hodnotu True nebo byl odstraněn aktuální záznam. Požadovaná operace vyžaduje aktuální záznam'.

Původní znění: Either BOF or EOF is true, or the current record has been deleted. Requested operation requires a current record.

Situace:

  • cxGrid mřížka napojená na ADOQuery a včetně SyncMode=true
  • v dotazu je pouze "SELECT * FROM Otazky"
  • pomocí mřížky vyfiltrování několika záznamů
  • postupné aktualizace záznamů tak, aby nevyhovovaly filtru => z mřížky mizí
  • po zmizení posledního dojde k chybě

Aktualizace záznamů se provádí takto a k chybě dojde při volání Post.

QueryOtazky.Edit;
QueryOtazkyHodnoceni.Value:=1;
QueryOtazky.Post;