Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Proektirovanie_BD_v_Delphi_VTiP.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.82 Mб
Скачать

5.4Доступ к полям запроса

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

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

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

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

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

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

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

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

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

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

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

SELECT Bookld, BName, BYear

FROM BOOKS

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

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

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

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

property Value: 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 объекта-поля:

property AsBoolean: boolean;

property AsCurrency: currency;

property AsDateTime: TDateTime;

property AsFloat: double;

property Aslnteger; integer;

property AsString: string;

property AsVariant: variant;

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

Edit1.Text := quBooksBookID.AsString;

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

5.4.2Обращение к значению поля при помощи свойств набора данных Fields и FieldValues

Если для НД не создан ни один объект-поле, получить доступ к значению поля НД можно через свойства этого набора Fields и FieldValues:

property Fields[Index]: TField

property FieldValues['Имя_поля']: variant

Примечание. Этот метод можно применять и при наличии объектов-полей.

Тип возвращаемого значения поля может быть преобразован с помощью свойства AsXXXX.

Свойство Fields[Index] требует указания порядкового номера поля в списке полей НД. Нумерация полей в свойстве Fields начинается с 0. В приведенном примере запроса quBooks поле 'BYear' является 2-ым по счету, начиная с 0.

Edit1.Text := quBooks.Fields[1].AsString;

Свойство FieldValues['Имя_поля'] требует указания имени поля в НД, заключенного в одинарные кавычки. Следует подчеркнуть, что свойство FieldValues является умалчиваемым свойством для НД. Поэтому следующие обращения идентичны:

Edit1.Text := quBooks['BYear'];

Edit1.Text := quBooks.FieldValues['BYear'];

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]