Лабораторная работа по курсу Базы данных.
Пользовательский интерфейс для заполнения таблицы, содержащей данные других таблиц. Время выполнения – 2 часа.
Исходные данные: База данных Магазин.mdb. Отлаженное приложение, выполненное в рамках лабораторной работы «Пользовательский интерфейс ADO-доступа к справочникам БД. Поиск и фильтрация».
Задание
Создайте Delphi - приложение, которое выполняет заполнение таблицы продаж товаров SALES с использованием ADO – доступа. Таблица продаж содержит поля, содержащие справочные данные о товарах и фирмах. Виртуальное вычисляемое поле СТОИМОСТЬ = КОЛИЧЕСТВО * ЦЕНА формируется автоматически. Форма заполнения таблицы продаж должна иметь вид, представленный на Рис.1
Рис.1
Добавление к проекту таблицы SALES (ПРОДАЖИ).
1. Откройте Delphi – проект, созданный во время выполнения лабораторной работы «Пользовательский интерфейс ADO-доступа к справочникам БД. Поиск и фильтрация». Предварительно создайте копию папки, в которой он находится.
2. Откройте окно модуля данных DM.
3. Поместите в область модуля объекты ADO/ ADOTable, Data Access/ DataSource. Используя свойство Name, переименуйте их в ADOTbSales и DSSales – рис.2
Рис.2
4. Последовательно в инспекторе объектов установите следующие свойства для новых объектов модуля данных DM:
Объект | Свойство | Значение |
ADOTbSales | Connection | ADOConnection1 |
TableName | Sales | |
Active | True | |
DSSales | DataSet | ADOTbSales |
5. Используя правую кнопку мыши над объектом ADOTBSales, войдите в редактор полей Fields Editor и добавьте поля таблицы в объект (опция Add All Fields).
6. Установите на форму Form3, содержащую меню проекта, новые интерфейсные объекты из разделов Standard и DataControls палитры компонентов, изображенные на рисунке 3.
Рис. 3
7. Установите у созданных объектов следующие свойства:
Объект | Свойство | Значение |
Panel1 | Align | AlClient |
Caption | пусто | |
Panel2 | Align | AlBottom |
Caption | пусто | |
Panel3 | Align | AlTop |
Caption | пусто | |
DBNavigator1 | DataSource | DM.DSSales |
Align | AlClient | |
DBGrid1 | DataSource | DM.DSSales |
8. Запустите приложение и убедитесь в наличии связи с таблицей продаж, где вместо названий фирм и товаров пока находятся соответствующие коды.
9. Сохраните и запустите приложение.
Добавление к таблице ПРОДАЖ полей с подстановками из таблиц ТОВАРОВ и ФИРМ.
10. Добавьте к таблице SALES поля с подстановками из таблиц Firm, Tovar, содержащие названия фирм и названия продуктов. Для этого перейдите в окно модуля данных DM и добавьте к ADOTBSales два виртуальных поля – Tovar и Firm_Name. Сделайте это, используя правую кнопку мыши над объектом ADOTBSales и войдя в редактор полей Fields Editor. Предварительно отключите таблицу, задав ее свойство Active равным False. (Не забудьте вернуть значение свойства после создания всех виртуальных полей).
11. Для добавления виртуального поля Tovar в окне Fields Editor выберите опцию New Fields - Рис.4.
Рис.4
12. В диалоговом окне укажите имя нового поля, его тип, размер, имя таблицы товаров, поля связи обеих таблиц и поле, которое надо подставить (Рис.5)
Рис.5
13. Аналогично добавьте виртуальное поле для подстановки названия фирмы – Firm_Name (Рис.6)
Рис.6
14. Запустите приложение, добавьте новые строки в таблицу продаж, используя подстановки.
15. Удалите из DBGrid1 колонки Firm_Id и Tovar_ID (они формируются автоматически и останутся в БД и в модуле данных, просто не будут видны при заполнении).
16. Дайте колонкам русские заголовки (Title) и шрифты.
17. Запустите и сохраните приложение.
Добавление к таблице ПРОДАЖ виртуального вычисляемого поля.
18. Перейдите в окно модуля данных DM и добавьте к таблице ADOTBSales виртуальное вычисляемое поле Stoimost = Quantity * Price. Сделайте это, используя правую кнопку мыши над объектом ADOTBSales и войдя в редактор полей Fields Editor. Предварительно отключите таблицу, задав ее свойство Active равным False. (Не забудьте вернуть значение свойства после создания виртуального поля).
19. Для добавления виртуального поля Stoimost в окне Fields Editor выберите опцию New Fields и заполните диалоговое окно с типом поля – Currency и опцией Calculated - Рис.7.
Рис.7
20. В редакторе полей ADOTBSales должно добавиться новое поле – Рис.8
Рис.8
21. Для модуля данных DM, объекта таблицы ADOTbSales и события для нее OnCalcField создайте событийную процедуру, выполняющую расчет значения виртуального поля ADOTbSalesStoimost:
procedure TDM.ADOTbSalesCalcFields(DataSet: TDataSet);
Begin
ADOTbSalesStoimost.Value:= ADOTbSalesQuantity.Value *
ADOTbSalesPrice.Value;
end;
22. Подключите вычисляемое поле Stoimost к объекту DBGrid1 главной формы Form3, войдя в редактор колонок DBGrid1.
23. Запустите приложение и испытайте вычисляемое поле, добавив в таблицу 20-30 новых строк (Рис.1).
24. Сохраните приложение.