Лабораторная работа № 3

Тема: Работа с таблицей заказов, ввод данных по заказам.

Цель: Использование средств Delphi для облегчения работ со связанными таблицами (таблицы заказов).

Контрольный пример:

1. На Form2 разместим новую страницу PageControl, на которую поместим два компонента DBGrid и такое же количество DBNavigator.

2. Перейдем в DataModule и, используя раздел DataAccess, по три элемента для каждой таблицы (Заказ фирмы и Заказ товара): Table, Query, DataSource.

3.Выполним настройки свойств элементов, созданных для таблицы z_f.DB (Заказ фирмы). Компоненту Table укажем следующие свойства:

DataBaseName- укажем имя базы, используемой в проекте (Zakaz_v1)

TableName z_f. DB

Active – true

4. Будем использовать компонент Query для того, чтобы визуально в таблицы отображались наименования фирм, а хранились их коды. Настроим следующие свойства компонента:

DataBaseName zakaz_v1

SQL – Select * from z_f. DB

Requestlive - true (устанавливаем возможность редактирования данных)

5. Чтобы визуальное отображение наименований фирмы было возможно, необходимо определить соответствующие поля в Query. Для этого выполним следующие действия:

ü  Дважды щелкнем мышью по компоненту Query

ü  В открывшемся окне диалога вызовем контекстное меню правой клавишей мыши

ü  Выберем пункт Add Fields и укажем поля для запроса (можно все)

ü  Так как собственные поля таблице не предполагают отображение реальных названий фирм, то, используя контекстное меню, добавим новое поле в Query (New Field…)

НЕ нашли? Не то? Что вы ищете?

ü  В открывшемся окне диалога укажем следующие свойства поля:

Name – можно указать произвольное имя (напр., Firma)

Type – здесь указывается тип поля, которое предполагается отображать. Укажем, что поле текстовое

Field type – Lookup (связывает с источником данных и образует выпадающие списки)

Key FieldsID_Firma (ключевое поле для связи в текущей таблице)

Datasetfirma (имя таблицы в DataModule, которая будет служить источником данных)

Lookup KeysID_firma (ключевое поле для связи в таблице-источнике)

Result FieldsFirma (отображаемое поле)

Рис. 1. Добавление нового поля

ü  Для поля ID_Firma в запросе установим свойство Visible – False, т. к. наличие этого поля на форме теперь не является обязательным.

6. Компоненту DataSource укажем в свойстве DataSetQuery1 (только что созданный запрос). Свойству Active (компонента Query1) – True.

7. Вернемся на Form2 и установим для компонентов DBGrid и DBNavigator свойство DataSource. Результат проделанных действий приведен на рис. 2.

Рис.2. Страница заказов

Индивидуальное задание (самостоятельно):

1. Выполните для таблицы «Заказы товара» (z_t. DB) те же действия, что и для «Заказы фирм». То есть, чтобы вместо кода товара отображалось его наименование.

2. Поверьте работоспособность приложения. Внесите данные.

3. В созданном проекте таблица Z_T.DB (Заказы товара) отображает данные для всех заказов, вне зависимости от выбранного заказа в таблице Z_F.DB. Для того, чтобы установить соответствие между заказом и товарами в заказе необходимо несколько изменить настройки компонентов:

·  Изменить свойство SQL компонента Query2 (для таблицы Z_T.DB)

select * from z_t. db where id_zakaz=:ID_zakaz

где id_zakaz – поле из таблицы z_t. DB, а ID_zakaz – поле из таблицы z_f. DB

·  Изменить свойство DataSource компонента Query2 (для таблицы Z_T.DB) – DS_q1 (DataSource для запроса Query1, связанного с таблицей Z_F.DB).

4. Добавьте новый пункт в меню «Ввод данных» для перехода на закладку «Заказы». Колонки таблиц (компоненты DBGrid) сделайте русскоязычными. Если есть необходимость, установите порядок колонок следующий: «Код заказа», «Наименование товара (фирмы)», «Количество» (или «Дата»). Колонки «Код фирмы» или «Код товара» не должны отображаться.

5. Варианты 1 и 10 сделайте аналогичный запрос с подстановкой для своих таблиц.