Тема: Проектирование базы данных «Прокат фильмов». Лабораторная работа Задание 1.Разработать базу данных «Прокат фильмов», состоящую из трех таблиц: Таблица 1. Фильм Таблица 2. Клиент Таблица 3. Выдача фильмов (Квитанция) 1.1 Проектирование логической структуры БД Определите, из каких полей будет состоять каждая таблица, их тип и размер. Описание полей таблицы «КЛИЕНТ»: Ключ | Имя поля | Тип данных | Размер |  | Код клиента | Текстовый | | | Фамилия | Текстовый | | | Имя | Текстовый | | | Отчество | Текстовый | | | Адрес | Текстовый | | | Телефон | Текстовый | | Описание полей таблицы «ФИЛЬМ»: Ключ | Имя поля | Тип данных | Размер |  | Код фильма | Текстовый | | | Название фильма | Текстовый | | | Страна производитель | Текстовый | | | Режиссер | Текстовый | | | Время показа | Числовой | Длинное целое | | Жанр | Текстовый | | Описание полей таблицы «ВЫДАЧА ФИЛЬМОВ»: Ключ | Имя поля | Тип данных | Размер |  | № | Текстовый | | | Код фильма | Текстовый | | | Дата выдачи | Дата/Время | | | Залог | Денежная | Денежная | | Код клиента | Текстовый | | | Количество дней | Числовой | Длинное целое | | Цена проката в день | Денежная | Денежная | | Просрочено (дней) | Числовой | Длинное целое | | Итого (руб.): | Денежная | Денежная | 1.2 Создание БД Запускаем Access и выбираем «Создание базы данных» - «Новая база данных»:  Дайте имя вашей БД «Прокат фильмов». 1.3 Создание таблиц Создайте таблицы вашей базы в режиме конструктора: «Объект» - «Таблицы» - «Создание таблицы в режиме конструктора»  1.4 Таблица «КЛИЕНТ»  Сохраните таблицу под именем «КЛИЕНТ»:  Аналогично создайте таблицы «ФИЛЬМ» и «ВЫДАЧА ФИЛЬМОВ» 1.5 Таблица «ФИЛЬМ»  Для удобства ввода информации создайте для поля «Страна производитель» поле со списком. Исходные данные для формирования списка могут задаваться различными способами: из таблиц, запросов или вводиться через точку с запятой. В вашем случае исходные данные задаются во вкладке «Подстановка» через точку с запятой. 1.6 Таблица «ВЫДАЧА ФИЛЬМОВ»  1.7 Установите связи между таблицами Выберите в меню команду «Сервис» - «Схема данных» . Из окна «Добавление таблицы» добавляем три таблицы в окно «Схема данных». Ставим указатель на поле «Код клиента» в таблице «КЛИЕНТ» и не отжимая кнопку мыши переносим указатель на то же поле «Код клиента» таблицы «ВЫДАЧА ФИЛЬМОВ». В появившемся окне отмечаем флажками: - Обеспечение целостности данных; - Каскадное обновление связанных полей; - Каскадное удаление связанных полей; √ Тип отношения «один – ко - многим»; √ «Создать»  Туже операцию произведите с полем «Код фильма», связывая таблицы «ВЫДАЧА ФИЛЬМОВ» и «ФИЛЬМ». Для удаления связей достаточно выделить ее нажать на клавише «Delete» или вызвав контекстное меню, выбрать «Удалить»:  1.8 Проектирование форм Форма – это наиболее удобное средство отображения данных. Формы удобна и наглядна, она использует графические возможности Windows (шрифты, графика и т. д.) При конструирование формы определяется, из каких таблиц будет отображаться данные, пояснительный текст и т. д. Для простоты создания формы воспользуйтесь возможностью автоматического создания автоформы в столбец. Выберите «Объекты» - «Форма» - «Создать», появится окно «Новая форма»:  Подключите операцию «Автоформа в столбец» и выберите в качестве источника данных таблицу «ФИЛЬМ». Появиться форма:  Доработайте эту форму в режиме «Конструктора» :  Вызовите «Панель элементов» :  Раздвиньте «Заголовок формы» и «Область данных» и на освободившемся месте с помощью элемента сделайте надпись «Все о фильме». Выделив эту область, отформатируйте надпись. Поле «Код фильма» перетяните в область «Заголовок формы». Форма преобразуется:  Добавьте в форму кнопку «Закрытия формы», воспользовавшись «Панелью элементов». Нажмите на пиктограмму «Кнопка» и вычертите прямоугольник на поле формы. После рисования кнопки появится окно «Создание кнопок». Выберите «Категории» - «Работа с формой» и «Действия» - «Закрыть форму» - «Далее»:  В окне «Создание кнопок» выберите «Текст» или «Рисунок» - «Далее»:  Имя кнопки можно не задавать. Получившаяся форма, готова к заполнению:  Сохраните форму под именем «ВСЁ О ФИЛЬМЕ»:  Аналогично создайте форму для заполнения таблицы «КЛИЕНТ» :  Заполните через форму ВСЁ О ФИЛЬМЕ» таблицу «ФИЛЬМ» (не менее 10 записей):  Заполните через форму «КАРТОЧКА КЛИЕНТА» таблицу «КЛИЕНТ» (не менее 10 записей):  Создайте форму для заполнения таблицы «ВЫДАЧА ФИЛЬМОВ»:  Добавляем форму «БЛАНК ВЫДАЧИ ФИЛЬМОВ»: & Вместо поля «Код фильма» укажите название фильма посредствам поля со списком. Включите дополнительные поля для фильма: время показа, жанр фильма и режиссера. & Вместо поля «Код клиента» укажите фамилию клиента посредствам поля со списком. Включив дополнительные поля для клиентов – укажите имя и телефон. В режиме конструктора преобразуйте поле «Код фильма» в поле со списком, т. е. вместо самого кода выбирайте из наименование фильма. В таблицу же будите записывать код: Для этого: < Удалите поле «Код фильма». < На панели элементов управления выберите инструмент «Поле со списком» . < Вычертите на освободившемся месте новое поле. После этого заработает мастер и появится последовательность из 5 диалоговых окон. < В первом окне проверьте способ получения значений для поля со списком, должен быть подключен способ «Объект «поле со списком» будет использовать значения из таблицы или запроса» - «Далее»;  < Во втором окне выберите таблицу, из которой будите брать значения поля со списком, так как вы удалили поле «Код фильма», то таблицу должны выбрать «ФИЛЬМ» - «Далее»;  < В третьем окне перенесите поле «Код фильма» и «Название фильма» из окна «Доступные поля» в окно «Выбранные поля» с помощью кнопки ;  < В четвертом окне выберите, нужно ли скрывать ключевой столбец – «Далее»;  < В пятом окне укажите, где сохранить выбранное из объекта поле со списком – в поле «Код фильма» - «Далее»;  < В шестом окне задайте надпись «Название фильма» - «Готово».  Проверьте работу «Поля со списком» в режиме формы:  Включите дополнительные поля для фильма – укажите время показа, жанр фильма и режиссера. Данные в этих полях будут появляться автоматически при смене названия фильма: < В режиме конструктора посредством нажатия правой клавиши мыши на черный квадрат в левом верхнем углу формы, выберите команду «Свойства»:  < В появившемся диалоговом окне «Форма» на закладке «Данные» выберите строку «Источник записей» и вызовите «построитель запросов»   Подтвердите создание запроса на основе этой таблицы. < Выберите пиктограмму «Отобразить таблицу» добавляем в рабочее поле построителя таблицу «ФИЛЬМ», т. к. из нее будете брать дополнительные данные:  < Перетащите в пустографку все поля из таблицы «ВЫДАЧА ФИЛЬМОВ» и поля «Время показа», «Жанр фильма»и «Режиссер»из таблицы «ФИЛЬМ» (т. е. поля, которые вы планируете вывести в дополнительные поля формы). < Сохраните изменения:  < Подключите пиктограмму «Список полей» и перетяните нужные поля в форму «БЛАНК ВЫДАЧИ ФИЛЬМОВ» и красиво разместите их на рабочем поле: Проверьте свою работу:  < Аналогично включите дополнительные поля для клиентов из таблицы «КЛИЕНТ» - укажите имя и телефон, доработайте форму. < Спроектируйте кнопку закрытия формы. < В результате получите:  1.9 Макросы В вашей задаче вы будите программировать макрос подсчета итоговой суммы, которую должен заплатить клиент за прокат фильма. Эта цена будет считаться по формуле: (Количество дней + Просрочено) * Цена проката в день - Залог 1.10 Процедура создания макроса Ø В окне БД выберите «Объекты» - «Макросы» - «Создать». Ø Выберите Макрокоманду «Задать значение».  Ø Выберите Аргумент макрокоманды «Элемент» и в «Построителе выражений» выполните последовательность действий: - указателем мыши щелкаем 2 раза по команде «Forms»; - указателем мыши щелкаем 2 раза по команде «Все формы»; - выберите форму «БЛАНК ВЫДАЧИ ФИЛЬМОВ»; - в среднем окне щелкните 2 раза по полю «Итого».  Ø Выберите Аргумент макрокоманды «Выражение» и с помощью «построителя выражения» повторите те же действия «Forms» - «Все формы» - «БЛАНК ВЫДАЧИ ФИЛЬМОВ» запишите формулу подсчета итоговой суммы:  Ø Сохраните макрос под именем «Сумма»:  Ø Макрос готов. Теперь надо его привязать к полям формы, которые использовались для данного макроса. 1.11 Подключение макроса Срабатывание макроса можно выполнить по нажатию кнопки, соответственно определив «Категорию кнопки» - «Разное», «Действие» - «Выполнить макрос «Сумма»»:  Можно выполнить срабатывание макроса автоматически, связав его с изменением событий, от которых зависит макрос. Для этого надо выполнить последовательность действий: - открыть форму «Бланк выдачи фильмов»; - подключить в «Конструктор»; - поставить указатель на поле «Итого» и вызвать контекстное меню; - выбрать команду «Свойства»; - подключить вкладку «События»; - в поле «После обновления» подключить макрос «Сумма».  То же самое проделать с полями «Залог», «Количество дней», «Просрочено», «Цена проката в сутки». Вновь открыть форму «БЛАНК ВЫДАЧИ ФИЛЬМОВ» и проверить работу макроса. Задание 2. Доработать форму «БЛАНК ВЫДАЧИ ФИЛЬМОВ»: 1. Добавить вычисляемое поле «Дата возврата» (Дата возврата = Дата выдачи + Количество дней) 2. Создайте поле «Просрочено» автоматически вычисляемым. 3. Создайте запрос для вывода всех должников на текущую дату. |