Во-первых, что такое курсор. Когда мы получаем записи, то нам нужен указатель на то, какая запись активная. Вот это и есть курсор. Мы передвигаясь по записям можем выйти за первую запись или за последнюю. Для этого у объекта Recordset есть специальные свойства.
Перемещаться по записям можно используя методы MoveNext, MoveFirst, MoveLast, MovePrevious, Move. Есть и другие методы типа AbsolutePosition, но они не обязательные и зависят от того поддерживает их OLEDB провайдер или нет. Курсор как раз и определяет как можно перемещаться по записям. В ADO существует 4 типа курсоров:
аdOpenDynamic - это самый удачный курсор для многопользовательской среды, сразу видны изменения вносимые другими пользователями.
аdOpenKeyset - все то же самое, что и для динамического за исключением того, что доступ к записям добавленным или удаленным другими пользователями запрещен.
аdOpenStatic - набор на момент генерации запроса.
аdOpenForwardOnly - набор записей с последовательным доступом. Доступен только один метод MoveNext.
Как видите каждый курсор для своей задачи. Последние два методы плохи тем, что они показывают фиксированный набор на момент доступа. Соответственно должен быть метод для обновления записей. И он есть, метод Reguery обновляет набор. Тип курсора указывается при открытии набора записей. В примере ниже открывается набор записей с динамическим курсором, но при таком подходе нужно указать объект активного соединения.
record.Open "select * from piple",adoConnect,adOpenDynamic
Если курсор не указывать, то по умолчанию он будет adOpenForwardOnly.