Для набора данных ADO в зависимости от его назначения можно выбрать тип и местоположение используемого курсора. Местоположение курсора задается свойством
type TCursorLocation = (clUseServer, clUseClient); property CursorLocation: TCursorLocation;
Курсор может находиться на сервере (CIUseServer) или на клиенте
(CIUseClient).
Серверный курсор используется при работе с большими
наборами данных, которые нецелесообразно пересылать клиенту целиком. При этом
несколько снижается скорость работы клиентского набора данных.
Клиентский курсор обеспечивает передачу набора данных
клиенту. Это положительно сказывается на быстродействии, но такой курсор разумно
использовать только для небольших наборов данных, не загружающих канал связи
с сервером.
При использовании клиентского курсора необходимо дополнительно установить свойство
которое управляет обменом данных клиента с сервером. Если соединение с сервером быстрое, можно использовать значение
moMarshalAll, разрешающее возврат серверу всех записей набора данных. В противном случае для ускорения работы компонента можно применить свойство
moMarshalModifiedOnly, обеспечивающее возврат только модифицированных клиентом записей.
ctunspecified — курсор не задан, тип курсора определяется
возможностями источника данных;
ctOpenForwardOnly — однонаправленный курсор, допускающий перемещение только вперед; используется при необходимости быстрого одиночного прохода по всем записям набора данных;
ctKeyset — двунаправленный локальный курсор, не обеспечивающий просмотр добавленных и удаленных другими пользователями записей;
ctDynamic — двунаправленный курсор, отображает все изменения, требует наибольших затрат ресурсов;
ctStatic — двунаправленный курсор, полностью игнорирует изменения, внесенные другими пользователями.
Примечание
Если курсор расположен на клиенте
(CursorType = ciusedient), то для него доступен только один тип — ctStatic.
Соответственно до и после каждого перемещения курсора в наборе данных вызываются методы -
обработчики:
const Error: Error; var EventStatus: TEventStatus)
if object;
property OnMoveComplete: TRecordsetErrorEvent;
где параметр Reason позволяет узнать, какой метод вызвал это перемещение.
Знаете ли Вы, что такое "Большой Взрыв"? Согласно рупору релятивистской идеологии Википедии "Большой взрыв (англ. Big Bang) - это космологическая модель, описывающая раннее развитие Вселенной, а именно - начало расширения Вселенной, перед которым Вселенная находилась в сингулярном состоянии. Обычно сейчас автоматически сочетают теорию Большого взрыва и модель горячей Вселенной, но эти концепции независимы и исторически существовало также представление о холодной начальной Вселенной вблизи Большого взрыва. Именно сочетание теории Большого взрыва с теорией горячей Вселенной, подкрепляемое существованием реликтового излучения..." В этой тираде количество нонсенсов (бессмыслиц) больше, чем количество предложений, иначе просто трудно запутать сознание обывателя до такой степени, чтобы он поверил в эту ахинею. На самом деле взорваться что-либо может только в уже имеющемся пространстве. Без этого никакого взрыва в принципе быть не может, так как "взрыв" - понятие, применимое только внутри уже имеющегося пространства. А раз так, то есть, если пространство вселенной уже было до БВ, то БВ не может быть началом Вселенной в принципе. Это во-первых. Во-вторых, Вселенная - это не обычный конечный объект с границами, это сама бесконечность во времени и пространстве. У нее нет начала и конца, а также пространственных границ уже по ее определению: она есть всё (потому и называется Вселенной). В третьих, фраза "представление о холодной начальной Вселенной вблизи Большого взрыва" тоже есть сплошной нонсенс. Что могло быть "вблизи Большого взрыва", если самой Вселенной там еще не было? Подробнее читайте в FAQ по эфирной физике.