Состояния набора данных
В процессе своего функционирования (от открытия методом Open и до закрытия методом close) набор данных может выполнять самые разнообразные операции. Можно просто перемещаться по записям, можно редактировать данные и удалять записи, можно проводить поиск по различным параметрам и т. д. При этом желательно, чтобы все операции выполнялись как можно быстрее и эффективнее.
Набор данных в любой момент времени находится в некотором состоянии, т. е. подготовлен к выполнению действий строго определенного рода. И для каждой группы операций набор данных выполняет ряд подготовительных действий.
Все состояния набора данных делятся на две группы.
- К первой группе относятся состояния, в которые набор данных переходит автоматически, а также непродолжительные по времени состояния, сопровождающие функционирование полей набора данных (табл. 12.1).
- Во вторую группу входят состояния, которыми можно управлять из приложения, например, перевод набора данных в режим редактирования (табл. 12.2).
Базовый класс TDataSet, инкапсулирующий свойства набора данных, позволяет изменять состояние, а также проверять текущее состояние набора данных.
Текущее состояние набора данных передается в свойство state, имеющее тип TDataSetState:
type TDataSetState = (dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc);
Для управления состояниями набора данных используются методы 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. Управляемые состояния набора данных.
| Константа состояния | Метод | Описание |
|---|---|---|
| dslnactive | Close | Набор данных закрыт |
| dsBrowse | Open | Данные доступны для просмотра, но недоступны для редактирования |
| dsEdit | Edit | Данные можно редактировать |
| dslnsert | Insert | К набору данных можно добавлять новые записи |
| dsSetKey | SetKey | Включается механизм поиска по ключу. Также могут использоваться диапазоны |
