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

2.12. Вычисляемые поля

Для создания статического вычисляемого поля нужно:

  1. В окне создания нового статического поля задать имя (поле Name) и тип (поле Type) поля, выбрать переключатель Calculated.

  2. Написать обработчик события OnCalcFields для НД Table, в котором производится расчет значения вычисляемого поля.

2.13. Практическая работа №7

Создать для таблицы Tovar.db два вычисляемых поля Total (общая стоимость товара в рублях) и TotalUE (общая стоимость товара в у.е. (в $)).

Значения полей Total и TotalUE вычисляются по следующим правилам:

Total=Kolvo*Cena

TotalUE= Total/30.36

При расчете стоимости в условных единицах предполагается, что обменный курс составляет 30 руб. 36 коп.

Расположите на форме компоненты Table1, DataSource1, DBGrid1 для работы с БД (для таблицы Tovar.db) и свяжите их.

Сделайте поля Tovar, Kolvo, Cena набора данных Table1статическими.

В контекстном меню Редактора полей выберите пункт New Field. В поле Name задайте имя поля Total. В списке Type выберите значение Float. Установите переключатель Calculated в группе переключателей Field type. Нажмите ОК.

Произведите аналогичные действия для поля TotalUE.

Закройте Редактор полей.

Напишите обработчик события OnCalcFields для НД Table1:

procedure TForm1.Table1CalcFields(DataSet: TDataSet);

begin

Table1Total.AsFloat:=Table1.FieldByName('Kolvo').AsFloat*

Table1.FieldByName('Cena').AsFloat;

Table1TotalUE.AsFloat:=Table1Total.AsFloat/30.36;

end;

Чтобы отформатировать значение поля TotalUE можно написать следующий обработчик события OnCreate для формы:

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1TotalUE.DisplayFormat:='###.##';

end;

Запустите программу и в компоненте DBGrid1 вы увидите вычисляемые поля Total и TotalUE.

Глава III. Индексирование баз данных

В таблицах могут определяться ключи и индексы. Ключ – это комбинация полей, данные в которых однозначно определяют каждую запись в таблице. Простой ключ состоит из одного поля, составной из нескольких полей. Поля, по которым построен ключ, называют ключевыми. Чтобы определить ключевое поле, нужно запустить программу Database Desktop, открыть таблицу, для которой строится ключ, перейти в окно изменения структуры таблицы и в этом окне в поле Key напротив имени поля поставить символ «*» клавишей [Пробел].

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

Индексы при создании именуются. Создание индекса называют индексированием таблицы.

Использование ключей и индексов позволяет:

  • однозначно идентифицировать записи;

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

  • увеличивать скорость доступа к данным (поиск данных);

  • выполнять сортировку записей в таблицах;

  • устанавливать связи между отдельными таблицами БД и т. д.

Для одной таблицы можно создать несколько индексов. В каждый момент времени один из них можно сделать текущим (активным). При существовании нескольких индексов таблица может не иметь текущего индекса.

Задание индекса сводится к определению:

  • состава полей;

  • параметров;

  • имени.

Для задания индексов надо:

  1. Запустить Database Desktop;

  2. Открыть таблицу, которую необходимо проиндексировать;

  3. Перейти в окно создания структуры таблицы (Table/Restructure);

  4. В комбинированном списке Table properties: выбрать пункт Secondary Indexes (вторичные индексы);

  5. Нажать на кнопку Define (определить);

  6. В появившемся окне Define Secondary Index (задание вторичного индекса) задать состав полей и параметры индекса:

  • Unique (Уникальный) – индекс требует для составляющих его полей не повторяющихся значений;

  • Case sensitive (Зависящий от условий) – для полей строкового типа учитывается регистр символов;

  • Descending (Нисходящий) – сортировка выполняется в порядке убывания значений.

  1. Нажать кнопку ОК, появится окно Save Index As (Сохранить индекс), в котором указывается имя индекса (indИмяПоля, например, indTovar, indKolvo, indTovarCena и т.д.). В имени индекса указывается имя поля, по которому строится индекс.

  2. После повторного нажатия кнопки ОК сформированный индекс добавляется к таблице и его имя появляется в списке индексов.

Чтобы изменить индекс, нужно в окне изменения структуры таблицы в списке Table properties выбрать пункт Secondary Indexes, выделить имя изменяемого индекса и нажать кнопку Modify (Изменить). Для удаления индекса, нужно выделить имя удаляемого индекса и нажать кнопку Erase (Удалить).