Лабораторная работа № 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 сделайте аналогичный запрос с подстановкой для своих таблиц.