ЛАБОРАТОРНАЯ РАБОТА Установление связей между таблицами и запросы на выборку
ЛАБОРАТОРНАЯ РАБОТА Установление связей между таблицами и запросы на выборку
Задание 1. Установление связей между таблицами.
1. Откройте диалоговое окно Схема данных, щёлкнув на кнопке Схема данных в панели инструментов или выполнив команду Сервис - Схема данных.
2. Изучите структуру БД.
3. Выясните, между какими таблицами отсутствуют связи, и по каким полям эти таблицы можно связать. Какие таблицы будут главными, какие подчинёнными.
4. Закройте окно Схема данных.
5. Установите недостающие связи с помощью создания полей со списком.
Для установления связи между таблицами Типы и Товары следует преобразовать поле КодТипа в таблице Товары в поле со списком. При этом таблица Типы будет главной, а таблица Товары – подчинённой. Для преобразования следует:
¶ Открыть таблицу Товары (подчинённую) в режиме конструктора, выделив её в окне БД и щёлкнув на значке ;
¶ Для поля КодТипа в списке Тип Данных выбрать Мастер подстановок;
¶ В первом окне Мастера нажать кнопку Далее
¶ Во втором окне выбрать таблицу, являющейся главной для таблицы Товары, т. е. таблицу, из которой можно выбрать ТипТовара – таблицу Типы и нажать кнопку Далее;
¶ В третьем окне Мастера из доступных полей таблицы Типы выбрать поля КодТипа (по которому связываются таблицы) и Категория;
¶ В следующем окне Мастера согласимся с тем, что ключевой столбец скрыт, т. е. ширина столбца КодТипа в создаваемом списке будет равна 0 и нажать кнопку Далее;
¶ В последнем окне Мастера нажать кнопку Готово.
¶ В диалоговом окне Создание подстановки нажать кнопку Да.
¶ Закрыть таблицу Товары.
¶ Аналогично восстановите связь между таблицами Поставщики (главной) и Товары (подчинённой)
¶ Откройте окно Схема данных и преобразуйте созданные связи, предусмотрев выполнение условия целостности данных, каскадное удаление и каскадное обновление. Для этого дважды щёлкните левой кнопкой на связи и внесите изменения в окне Изменение связей.
¶ Нажмите кнопку ОК.
Создание запросов на выборку
Задание 1. Выяснить, поставки, каких товаров, относящихся к категории Фрукты, не ожидаются. В запрос включить наименование товара и реквизиты поставщиков данного товара.
Для создания запроса надо:
¶ В окне БД перейти на вкладку Запросы;
¶ Щёлкнуть на кнопке Создать и в появившемся окне диалога выбрать опцию Конструктор
¶ В окне диалога Добавление таблицы выбрать таблицы Товары, Поставщики и Типы, закрыть окно Добавление таблицы;
¶ В окне конструктора появятся указанные таблицы. Включить в бланк запроса поле Категория из таблицы Типы (двойным щелчком), поля Марка, Ожидается из таблицы Товары и поля Название, Адрес, Город, Телефон из таблицы Поставщики.
¶ В строку Условие отбора для поля Категория задать Фрукты, а для поля - Ожидается - 0;
¶ В строке Вывод на экран для полей Категория и Ожидается снять флажки опций, т. е. эти поля выводится на экран при выполнении запроса не будут;
¶ Выполнить запрос, щёлкнув на кнопке Вид панели инструментов или нажав кнопку Запуск ;
¶ Сохранить запрос под именем Запрос 11, щёлкнув на кнопке Сохранить или просто его закройте, что тоже приведёт к его сохранению.
Задание 2. Создать запрос для определения стоимости товаров в каждом из заказов, выполненных после 1997 года. В запрос включить КодЗаказа, НазваниеКлиента, НазваниеТовара и его стоимость.
Для создания запроса надо:
¶ В окне БД перейти на вкладку Запросы;
¶ Щёлкнуть на предложение Создание запроса в режиме конструктора.
¶ В окне диалога Добавление таблицы выбрать таблицы Клиенты, Заказы и Заказано;
¶ В окне конструктора появятся указанные таблицы. Включить в бланк запроса поля КодЗаказа, ДатаИсполнения из таблицы Заказы, поля КодТовара из таблицы Заказано, Название из таблицы Клиенты;
¶ Установить курсор в строку Поле первого свободного столбца и вызвать Построитель выражений (кнопка на панели инструментов или команда Построить в контекстном меню) для добавления вычисляемого поля Стоимость;
¶ В окне построителя выражений задать выражение, воспользоваться при этом возможностями Построителя
¶ Задать денежный формат для отображения данных поля Стоимость. Для этого установить курсор в поле Стоимость и щёлкнуть на кнопке Свойства . Для свойства Формат поля на вкладке Общие ввести выражение # ##0,00” грн”.
¶ В строку Условие отбора для поля Дата выполнения введите выражение >=01.01.1998
¶ Сохранить запрос под именем Запрос 12;
¶ Выполнить запрос.
Задание 3. Преобразуйте Запрос 12 в параметрический, выводя информацию только для одного клиента, для выполнения условия по дате исполнения используйте функцию Year().
Скопируйте Запрос 12, вставьте копию запроса и присвойте ему имя Запрос13. Внесите в Запрос13 следующие изменения:
¶ Откройте Запрос13 в режиме конструктора;
¶ Удалить столбец Дата исполнения;
¶ Установить курсор в строку Поле первого свободного столбца и вызвать Построитель выражений (кнопка на панели инструментов или команда Построить в контекстном меню) для добавления вычисляемого поля Год;
¶ В окне построителя выражений задать выражение: воспользоваться при этом возможностями Построителя Год:Year([Заказы]![ДатаИсполнения])
¶ В строке Условие отбора для поля Год задайте >1997
¶ В строке Условие отбора для поля Название задайте [Введите название клиента];
¶ В строке Вывод на экран для полей Год и Название снять флажки опций;
¶ Выполните запрос;
¶ В качестве названия клиента введите Island Trading
¶ Сохранить запрос.
Задания для самостоятельной работы
1. Отобрать не выполненные заказы, размещённые клиентами из Италии и Германии в 1998 году. В запрос включить поля: Код заказа, ДатаРазмещения, ДатаИсполнения, Доставка (способ доставки), НазваниеПолучателя, АдресПолучателя и СтранаПолучателя (все поля принадлежат таблице Заказы). При создании запроса использовать функцию Year().
Запрос сохранить под именем Запрос СР1.
2. Составить список сотрудников, оформивших заказы, доставленные почтой в США в 1996 году. В бланк запроса включит вычисляемое поле Фамилия, Имя, в котором будут отображаться Фамилии сотрудников и инициалы (например: Кротов А.) и использовать функцию Year().
Запрос сохранить под именем Запрос СР2 (воспользоваться таблицами Сотрудники и Заказы).