Для управления состояниями набора данных используются методы Open,
Close, Edit, Insert.
Таблица 12.1. Автоматические состояния набора данных
Константа состояния |
Описание |
dsNewValue |
Включается при обращении к свойству NewValue поля набора данных |
dsOldValue |
Включается при обращении к свойству OldValue поля на-бораданных |
dsCurValue |
Включается при обращении к свойству CurValue поля на-бораданных |
dsInternalCalc |
Включается при расчете значений полей, для которых FindKind = fklnternalCalc |
dsCalcFields |
Включается при выполнении метода OnCalcFields |
dsBlockRead |
Включается механизм ускоренного перемещения по набо- |
dsOpening |
ру данных Существует при открытии набора данных методом open или свойством Active |
dsFilter |
Включается при выполнении метода OnFilterRecord |
Таблица 12.2. Управляемые состояния набора данных
Константа состояния |
Метод |
Описание |
dsinactive |
Close |
Набор данных закрыт |
dsBrowse |
Open |
Данные доступны для просмотра, но недоступны для редактирования |
dsEdit |
Edit |
Данные можно редактировать |
dslnsert |
Insert |
К набору данных можно добавлять новые записи |
dsSetKey |
SetKey |
Включается механизм поиска по ключу. Также могут использоваться диапазоны |
Рассмотрим, как изменяется состояние набора данных при выполнении стандартных операций.
Закрытый набор данных всегда имеет неактивное состояние сЫпасНуе.
При открытии набор данных переходит в состояние просмотра данных скВголузе. В этом состоянии по записям набора данных можно перемещаться и просматривать их содержимое, но редактировать данные нельзя. Это основное состояние открытого набора данных, из него можно перейти в другие состояния, но любое изменение состояния происходит через просмотр данных (рис. 12.4).
Рис. 12.4. Схема изменения состояний набораданных
При необходимости редактирования данных набор должен быть переведен в состояние редактирования dsEdit, для этого используется метод Edit. После выполнения метода можно изменять значения полей для текущей записи. При перемещении на следующую запись набор данных автоматически переходит в состояние просмотра.
Для того чтобы вставить в набор данных новую запись, необходимо использовать состояние вставки dsinsert. Метод insert переводит набор данных в это состояние и добавляет на месте текущего курсора новую пустую запись. При переходе на другую запись, после проверки на уникальность первичного ключа (если он есть) набор данных возвращается в состояние просмотра.
Состояние установки ключа dsSetKey используется только в табличных компонентах при необходимости поиска методами FindKey и FindNext, а также при использовании диапазонов (метод SetRange). Это состояние сохраняется до момента вызова одного из методов поиска по ключу или метода отмены диапазона. После этого набор данных возвращается в состояние просмотра.
Состояние просмотра по блокам dsBlockRead используется набором данных при реализации быстрого перемещения по большим массивам записей без показа промежуточных записей в компонентах отображения данных и без вызова обработчика события перемещения по записям. Для реализации быстрого перемещения по набору данных можно использовать методы DisableControls И EnableControls.