Доступ к полям запроса является частным случаем доступа к значению поля НД.
К полю НД можно обратиться при помощи 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 приведет к ошибке.