В процессе своего функционирования (от открытия методом Open и до закрытия методом close) набор данных может выполнять самые разнообразные операции. Можно просто перемещаться по записям, можно редактировать данные и удалять записи, можно проводить поиск по различным параметрам и т. д. При этом желательно, чтобы все операции выполнялись как можно быстрее и эффективнее.
Набор данных в любой момент времени находится в некотором состоянии, т. е. подготовлен к выполнению действий строго определенного рода. И для каждой группы операций набор данных выполняет ряд подготовительных действий.
Все состояния набора данных делятся на две группы.
Базовый класс 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 |
|
Константа состояния
|
Метод
|
Описание
|
|
dslnactive
|
Close
|
Набор данных закрыт |
|
dsBrowse
|
Open
|
Данные доступны для просмотра, но недоступны для редактирования |
|
dsEdit
|
Edit
|
Данные можно редактировать |
|
dslnsert
|
Insert
|
К набору данных можно добавлять новые записи |
|
dsSetKey
|
SetKey
|
Включается механизм поиска по ключу. Также могут использоваться диапазоны |
