ДОСТУП К ПОЛЯМ ЗАПРОСА

Доступ к полям запроса является частным случаем доступа к значению поля НД.

К полю НД можно обратиться при помощи 3-х способов:

1. Свойств объектов-полей Value и AsXXXX;

2. Функции набора данных FieldByName;

3. Свойств набора данных Fields и FieldValues;

Эти способы порождают 5-ть вариантов, которые рассматриваются ниже.

4.4.1 Обращение к значению поля при помощи свойств
объектов-полей Value и AsXXXX

Объекты-поля предоставляют наиболее удобные средства Delphi по доступу к данным отдельных полей НД. В проектах Delphi рекомендуется в первую очередь использовать именно этот способ.

Примечание. Признаком хорошего тона является создание в проектах Delphi объектов-полей для всех полей запроса.

Если для поля НД определен объект-поле, получить в программе доступ к соответствующему полю НД можно по имени его объекта-поля.

Пусть создан запрос quBooks

SELECT Bookld, BName, BYear

FROM BOOKS

и все его объекты-поля BooksBookld, BooksBName и BooksBYear.

В начале покажем, как можно обратиться к значению объекта-поля при помощи свойства Value.

Примечание. Этот способ менее универсальный, чем использование свойства AsXXXX.

В таблице 4.4 перечислены типы значений, возвращаемых свойством Value объекта-поля:

propertyValue: variant;

Таблица 4.4 - Типы значений, возвращаемых компонентами в свойстве Value

Тип Компонент
variant Все компоненты
string TField, TBlobField
longInt TAutoIncField, TIntegerField, TSmallintFietd, TWordField
double TBCDField, TCurrencyField, TFloatField
boolean TBooleanField
TDateTime TDateField, TDateTimeField, TTimeField

Например, если BooksBookID – объект-поле типа TAutoIncField, то его свойство Value возвращает значение типа longInt и в результате возможно выражение с автоматическим преобразованием типов от longInt к String:

Edit1.Text := quBooksBookID.Value

Теперь покажем, как можно обратиться к значению объекта-поля при помощи свойств AsXXXX, которые явно выполняют приведение типов полей, например integer к String. Это наиболее часто используемый способ обращения к значению объекта-поля.

Для приведения типов полей определены следующие свойства AsXXXX объекта-поля:

propertyAsBoolean: boolean;

propertyAsCurrency: currency;

propertyAsDateTime: TDateTime;

propertyAsFloat: double;

propertyAslnteger; integer;

propertyAsString: string;

propertyAsVariant: variant;

Каждое из этих свойств приводит значение поля к соответствующему типу данных, указанному в названии свойства. Например, если BooksBookID - поле TAutoIncField, для приведения его к типу stringнужно воспользоваться свойством AsString:

Edit1.Text := quBooksBookID.AsString;

Разумеется, тип поля должен быть совместимым с типом данных, к которому приводится значение поля. Например, если MoveSumma - поле TCurrencyField, попытка привести его к несовместимому типу boolean приведет к ошибке.