Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Создание статических полей

По умолчанию при каждом открытии набора данных для каждого поля набора автоматически создается свой элемент списка Fields. Это случай динамического создания списка полей. Недостатком использования динамических полей является то, что нельзя ограничить состав полей или определить вычисляемые поля. Другой подход состоит в том, что на этапе разработки приложения при помощи Редактора полей определяются статические поля, которые позволяют:

  • определить вычисляемые поля, значения которых вычисляются, используя значения других полей;

  • определить поля выбора (подстановочные поля);

  • ограничить состав полей набора данных;

  • изменить порядок полей набора;

  • задать формат отображения или редактирования данных поля набора.

Однако при модификации структуры таблицы, например, при удалении поля, придется соответственно модифицировать и статические поля, иначе возникнет исключительная ситуация.

В случае, если определено хотя бы одно статическое поле, динамические поля создаваться не будут.

Для запуска Редактора полей следует дважды щелкнуть мышью на компоненте Table или Query. Для создания статического поля следует вызвать контекстное меню Редактора полей (щелкнуть по нему правой кнопкой мыши) и выбрать пункт Add Fields (свойства DatabaseName и TableName должны уже указывать на таблицу). Затем выбрать из списка необходимые поля и нажать Ok. Для удаления статического поля – выберете его в Редакторе и нажмите на клавишу Delete. Для изменения порядка полей используются клавиши Ctrl и стрелки вверх/вниз. После создания статического поля изменить его свойства можно в Object Inspector.

Для создания вычисляемого поля (Calculated)в контекстном меню Редактора выберите NewField. В появившемся окне задайте имя поля (Name), его тип (Type) и, при необходимости, размер (Size). Установите Field Type в Calculated и нажмите Ok. Далее для набора данных, содержащего поле (не для самого поля!), напишите обработчик сообщения OnCalcFields, в котором присвойте значения всем вычисляемым полям набора. Например:

procedure TForm1.Table1CalcFields(DataSet: TDataSet);

begin

with Table1 do

FieldByName('PriseAll').AsCurrency := FieldByName('Prise').AsCurrency * FieldByName('Count').AsInteger;

end;

Поле выбора (Lookup) предоставляет возможность выбора одного значения из предлагаемого списка и автоматического занесения информации в заданное поле модифицируемой записи. Оба набора данных связываются по полям связи.

Например, есть таблица Table2, хранящая номер (N), название (NameBook) и т.д. какой-то книги, а в другой таблице Table1 ссылка на книгу хранится по номеру (N_Book). Требуется подставлять номер книги во вторую таблицу, выбирая его по названию. Для этого в Редакторе полей второй таблицы создайте Lookup-поле: в контекстном меню Редактора выберем New Field, в появившемся окне задайте - имя поля Book, тип String и размер 25; установите Field Type в Lookup. Далее задайте поля связи: Кеу Fields – N_Book, Dataset - имя компоненты Table2 первой таблицы, Lookup Keys - N и Result Field - NameBook.

Тогда при запуске программы в новом столбце Book появится возможность выбора книги из раскрывающегося списка.