property IsNull: Boolean;
Свойство возвращает значение True, если параметр не имеет значения или имеет значение Null.
Свойство
property Bound: Boolean;
возвращает значение True только тогда, когда параметру не присваивалось значение вообще.
Метод
procedure Clear;
присваивает параметру значение Null.
Само значение параметра задается свойством
property Value: Variant ;
Но использование вариантов не очень эффективно, когда требуется обеспечить максимальную скорость. В таких случаях можно обратиться к целому набору свойств As..., которые не только возвращают значение, но и приводят его к некоторому типу. Например, свойство
property As Integer: Longlnt;
возвращает целочисленное значение поля.
( Примечание ^
Необходимо осторожно использовать свойства с приведением типа, т. к. попытка преобразования неверного значения вызовет исключительную ситуацию.
Для чтения из буфера и записи в буфер значения параметра соответственно используются методы
procedure SetData (Buffer: Pointer);
procedure GetData (Buffer: Pointer) ;
а необходимый размер при записи в буфер позволит определить метод
function GetDataSize: Integer;
Можно скопировать тип данных, имя и значение параметра прямо из поля данных. Для этого применяется метод
procedure AssignField (Field: HtLeld) ;
а для присвоения типа данных и значения используется метод
procedure AssignFieldValue (Field: TField; const Value: Variant); Общее число знаков для числовых значений определяет свойство
property Precision: Integer; А свойство
property NumericScale: Integer; задает число знаков после запятой.
Для строковых параметров размер задает свойство
property Size: Integer;
Состояния набора данных
В процессе своего функционирования (от открытия методом Open и до закрытия методом Close) набор данных может выполнять самые разнообразные операции. Можно просто перемещаться по записям, можно редактировать данные и удалять записи, можно проводить поиск по различным параметрам и т. д. При этом желательно, чтобы все операции выполнялись как можно быстрее и эффективнее.
Набор данных в любой момент времени находится в некотором состоянии, т. е. подготовлен к выполнению действий строго определенного рода. И для каждой группы операций набор данных выполняет ряд подготовительных действий.
Все состояния набора данных делятся на две группы.
□ К первой группе относятся состояния, в которые набор данных переходит автоматически, а также непродолжительные по времени состояния, сопровождающие функционирование полей набора данных (табл. 12.1).
• Во вторую группу входят состояния, которыми можно управлять из приложения, например, перевод набора данных в режим редактирования (табл. 12.2).
Базовый класс TDataSet, инкапсулирующий свойства набора данных, позволяет изменять состояние, а также проверять текущее состояние набора данных.
Текущее состояние набора данных передается в свойство state, имеющее
ТИП TDataSetState:
type TDataSetState = (dslnactive, dsBrowse, dsEdit, dslnsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc);