Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование БД в Delphi ВТиП.doc
Скачиваний:
53
Добавлен:
17.03.2016
Размер:
3.62 Mб
Скачать
    1. Доступ к полям запроса

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

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

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

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

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

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

      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 приведет к ошибке.

      1. Обращение к значению поля при помощи свойств набора данных 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'];