Книга: VBA для чайников
Определение параметров объектов Recordset
Определение параметров объектов Recordset
Вы получаете контроль над созданным объектом Recordset с помощью различных параметров, определяющих вид указателя, тип блокировки и т.д. Вы можете определить эти параметры одним из двух способов, в зависимости от того, каким образом вы создавали объект
Recordset - с помощью аргументов метода Open объекта Recordset, а также свойств этого объекта. Оба подхода были продемонстрированы с помощью фрагментов кода раньше в настоящей главе
В базах данных курсор означает функциональные возможности, необходимые для перемещения между записями. Тип курсора, который вы выбираете для объекта Recordset, определяет, насколько свободно пользователь сможет работать с записями, а также будут ли автоматически отражаться изменения, внесенные другими пользователями. Используйте свойство Cursor Type или соответствующий аргумент метода Open для указания выбранного вами варианта. Все доступные варианты перечислены в табл. 17.1. По умолчанию тип курсора определен как Forward-only.
Таблица 17.1. Типы курсоров, доступные для объекта Recordset
Тип курсора |
Константа-значение свойства CursorType |
Определение |
Forward-only |
adOpenForwardOnly |
Разрешает перемещение между элементами объекта только в одном направлении, или на определенное количество записей, или к последней записи. Изменения, внесенные другими пользователями, не появляются до тех пор, пока набор записей не будет закрыт, а затем снова открыт. Этот тип курсора обеспечивает максимальное быстродействие, но только в том случае, если вам необходимо перемещаться по записям всего один раз |
Static |
adOpenStatic |
Фиксированный набор записей, который не может быть обновлен и не отражает изменения, внесенные другими пользователями, до тех пор, пока он не будет закрыт, а затем снова открыт. Этот вариант подходит для поиска данных и создания отчетов, обеспечивая более высокую скорость, чем варианты Keyset и Dynamic |
Keyset |
adOpenKeyset |
Набор, чьи записи их значения могут изменяться в результате внесения соответствующих изменений в базу данных. Однако подобный набор записей не отражает изменения, внесенные другими пользователями |
Dynamic |
adOpenDynamic |
Этот вариант напоминает набор записей Keyset, за исключением того, что он не отражает изменения, внесенные в базу данных |
Свойство Cursor Location объекта Recordset позволяет вам определить, будет ли курсор находиться на компьютере пользователя (компьютере клиента) или на сервере. Для этого присвойте ему значение adUseClient или adUseServer соответственно. Вообще, используйте курсоры на стороне клиента при работе с базами данных SQL Server и другими
сетевыми базами данных, а курсоры на сервере - при работе с базами данных Jet. Вы можете определить расположение курсора по умолчанию для всех наборов записей подключения с помощью свойства Cursor Type объекта Connection. блокирование
Свойство LockType объекта Recordset определяет, как именно должна вести себя программа в том случае, если два или больше пользователей пытаются одновременно изменить одну и ту же запись. По умолчанию значение этого свойства равно adLockPessimistic, что предотвращает внесение изменений. Если вы хотите иметь возможность изменять набор записей, вы должны присвоить свойству LockType одно из значений, приведенных в табл. 17.2.
Таблица 17.2. Параметры блокировки для объектов Recordset
Тип блокировки |
Константа-значение свойства LockType |
Определение |
No lock (Блокировка отсутствует) |
adLockOptimistic |
Несколько пользователей могут одновременно изменять одну и ту же запись, однако при этом получают уведомление о том, что внесенные ими изменения могут конфликтовать с изменениями, внесенными другими пользователями (записи блокируются только при выполнении метода UpDate). Этот вариант хорошо подходит для баз данных, с которыми работает только один пользователь, а также многопользовательских баз данных, в которых всегда правильными и полными считаются сведения, добавленные самыми последними |
Batch update (Пакетное обновление) |
adLockBatchOptimistic |
Этот вариант напоминает предыдущий, за тем исключением, что записи блокируются при групповом, а не индивидуальном обновлении |
Read only (all records) (Только чтение (все записи)) |
adLockReadOnly |
Все записи блокируются в то время, когда набор записей открыт; изменять их не может ни один пользователь, Однако доступ к записям разрешен |
Read only (edited records) (Только чтение (изменяемые записи)) |
adLockPessimistic |
Блокируется только та запись, с которой пользователь работает в данный момент. Блокировка снимается в тот момент, когда пользователь переходит к другой записи |
- Иерархия объектов в InterBase
- 1.2. Определение количества информации. Единицы измерения количества информации
- Имена объектов длиной 68 символов
- Определение версии клиента
- Единое имя файла параметров InterBase
- Определение пользовательского формата числовых данных
- Создание объектов Collection
- Определение целей. Построение цепочек
- Определение необходимого системного вызова
- Раздел 1 Лояльность: определение и ключевые факторы
- Определение позиционного уровня
- Использование параметров библиотек документов