Что означает код HRESULT 0xC8000643 (hrNoCurrentRecord)?

 
Предыдущий Следующий
hrRecordNotFound hrRecordClusteredChanged

hrNoCurrentRecord

Что означает hrNoCurrentRecord

hrNoCurrentRecord (0xC8000643) — курсор не установлен на запись.

Это старый HRESULT-вариант результата ESE (Extensible Storage Engine, ESENT); в JET API соответствующее условие известно как JET_errNoCurrentRecord.

Что проверить

  • Сохраните позицию курсора перед вызовом: текущую запись, индекс, bookmark и уровень транзакции. После move/update/delete эта позиция может стать недействительной.
  • Bookmark и сохранённые идентификаторы должны относиться к той же таблице и контексту, где были получены; отсутствие текущей записи обрабатывайте отдельно от отсутствия объекта.

Практический смысл и диагностика

  • Cursor находится before-first, after-last, на удалённой row либо иначе не позиционирован на текущей record.
  • `hrRecordNotFound` описывает неуспешный lookup; `hrNoCurrentRecord` возникает позже, когда операция требует current row, а cursor её не имеет.
  • Проверяйте результат navigation/seek до retrieve/update и выполняйте reseek, если concurrency могла инвалидировать текущую позицию.
  • Особенно проверьте последовательность `JetMove`, `JetSeek`, `JetGetBookmark`, `JetGotoBookmark`, `JetPrepareUpdate`, `JetUpdate` и `JetDelete`.

Технические ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.