Многотабличные базы данных | Формы (11_34_pol)

Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, базовый уровень)


Уроки 20 - 21
Многотабличные базы данных
(§21. Работа с многотабличной базой данных)



Содержание урока

Таблицы и связи между ними

Запрос данных из нескольких таблиц

Итоговый запрос

Формы

Отчёты

Вопросы и задания

Задача


Формы


Построим форму, показанную на рис. 3.43, в которой для каждого номера заказа выдаётся его дата, состав заказанных блюд с ценами и общая сумма.

Рис. 3.43

Рис. 3.43

Форма создается на основе таблицы или запроса. В данном случае мы хотим получить информацию о заказе, поэтому основной источник данных — это таблица — Заказы.

Информацию о названиях блюд и ценах можно было бы взять из таблицы Блюда, но она напрямую не связана с таблицей Заказы, поэтому так сделать не получится. Однако у нас есть запрос ЗапросЗаказы, где эти данные объединены, поэтому состав заказа и цены на отдельные блюда мы возьмём из этого запроса.

Как получить общую сумму? Вспомним про ЗапросКОплате, где сумма для каждого заказа уже найдена. Таким образом, форма объединяет информацию из таблицы Заказы и двух запросов. Связь между ними устанавливается по номеру заказа — это поле есть везде.

Как мы уже упоминали, основной источник данных — это таблица Заказы. Щёлкнем на её имени правой кнопкой мыши и выберем пункт Мастер форм из контекстного меню. Включим в форму все поля.

На втором шаге мастер предлагает добавить субформу (подчинённую форму) — дополнительный источник данных, связанный с главной формой. Отметим флажок Добавить субформу (рис. 3.44).

Рис. 3.44

Рис. 3.44

Мастер определил, что для таблицы Заказы подчинённой является таблица Заказано (они связаны отношением 1 :N) и предлагает выбрать эту таблицу. Однако нам нужно использовать запрос, поэтому отметим второй вариант: Субформа, основанная на выбранных полях. Далее выберем поля Заказ, Блюда и Цена из запроса (рис. 3.45).

Рис. 3.45

Рис. 3.45

Несмотря на то что поле Заказ не будет выводиться на экран, его нужно включить в субформу, потому что через это поле на следующем шаге работы мастера устанавливается её связь с главной таблицей (рис. 3.46).

Рис. 3.46

Рис. 3.46

Затем выберем расположение элементов главной и подчинённой форм (рис. 3.47).

Рис. 3.47

Рис. 3.47

После завершения работы мастера нужно отрегулировать размеры полей и настроить формат вывода. Например, для правильного отображения цены нужно войти в конструктор форм, щёлкнуть правой кнопкой мыши на столбце Цена и выбрать пункт Заменить на — Поле валюты. Количество десятичных знаков можно изменить с помощью свойства Точность в окне свойств столбца (пункт Столбец в контекстном меню). Столбец Заказ в подчинённой форме нужно просто удалить (пункт Удалить столбец в контекстном меню).

Осталось вывести общую стоимость заказа. Напомним, что её нужно взять из другого источника данных — запроса Запрос- КОплате. Это значит, что необходимо добавить к форме ещё одну субформу. Мастер тут не поможет, придётся выполнить эту операцию вручную.

Откроем форму в режиме дизайна (Конструктора) и запустим Навигатор форм, щелкнув на кнопке на нижнеи панели инструментов (рис. 3.48).

Рис. 3.48

Рис. 3.48

Здесь MainForm — это главная форма, a SubForm — подчинённая (её содержимое можно раскрыть, щёлкнув на знаке « + »). Остальные ветви дерева — это метки и поля данных.

Щёлкнем правой кнопкой мыши на имени главной формы и выберем в контекстном меню пункт Создать - Форма. В Навигаторе форм появится новая форма с именем Форма, но на экране ничего не меняется, ведь мы пока не добавили в эту форму ни одного элемента.

Выделите название новой формы и создайте метку (надпись) с текстом «К оплате». Для этого надо щёлкнуть на кнопке на панели Элементы управления (обычно она расположена слева) и выделить область по размеру метки (под таблицей). Свойства метки настраиваются с помощью кнопки на нижней панели инструментов или пункта Элемент управления из контекстного меню. Обратите внимание, что в окне Навигатора форм эта метка принадлежит новой субформе. Теперь аналогично добавьте на форму поле валюты, в котором будет выводиться сумма оплаты для выбранного заказа. Кнопка для вставки такого поля находится на панели дополнительных элементов управления.

Перед, вставкой нового поля в окне выделить сторую субформу, которой это поле должно принадлежать.

Осталось связать новую субформу с источником данных.. Для этого выделим субформу в окне Навигатора форм и выберем: Свойства в контекстном: меню. На вкладке Данные установим тип содержимого — запрос, в следующей строчке выберем Запрос - КОплате (рис. 3.49).

Рис. 3.49

Рис. 3.49

Теперь в окне свойств добавленного поля валюты на вкладке Данные надо выбрать поле даннык КОгглапъе. После этого форма полностью работоспособна.

Следующая страница Отчёты



Cкачать материалы урока







Наверх