При использовании клиентского курсора запись обычно идентифицируется по первичному ключу или, если его нет, запись не может быть обновлена.
При использовании серверного курсора сервер отслеживает, с какой записью вы работаете, и это можно определить по таким вещам, как первичный ключ или индикатор обращения строки.Если сервер отслеживает конкретную версию строки, и эта строка изменяется, она потеряет ее, если не будет уведомлена.
Используйте Connection.CursorLocation = adUseClient
для использования курсора на стороне клиента.
Свойство Recordset.Index
полностью используется для чего-то другого.Он используется для выполнения Recordset.Seek
команд для наборов записей, открытых с помощью CommandType = adCmdTableDirect
и с использованием курсора на стороне сервера.Если вы напечатаете Recordset.Supports(adIndex)
, вы заметите, что ваш набор записей не поддерживает его после открытия.Установка неподдерживаемого свойства может вызвать ошибку или просто ничего не делать в ADO.