lab 3 (Ввод данных по заказам )

advertisement
Лабораторная работа № 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 Fields – ID_Firma (ключевое поле для связи в текущей таблице)
Dataset – firma (имя таблицы в DataModule, которая будет служить
источником данных)
Lookup Keys – ID_firma (ключевое поле для связи в таблице-источнике)
Result Fields – Firma (отображаемое поле)
Рис. 1. Добавление нового поля
 Для поля ID_Firma в запросе установим свойство Visible – False, т.к. наличие
этого поля на форме теперь не является обязательным.
6. Компоненту DataSource укажем в свойстве DataSet – Query1 (только что
созданный запрос). Свойству 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 сделайте аналогичный запрос с подстановкой для своих
таблиц.
Download