Задание База данных «Автопарк» MS Access (16 вариант).
База данных должна содержать следующие элементы:
Как видим, простейший однотабличный запрос.
Второй запрос на выборку
Здесь нам нужно посчитать длительность маршрута, то есть разницу во времени между выходом на маршрут и прибытием с маршрута. Чтобы вычислить разницу, вычтем из времени прибытия время выхода. Это делается без всяких дополнительных функций, простым вычитанием. Но затем нужно перевести полученное значение в формат времени, для этого используется функция CDate(). Если кликнуть правой кнопкой мыши на построенное поле в запросе и выбрать пункт «Свойства», то можно установить нужный формат поля (например, краткий формат времени). Полученный результат на рисунке:
База данных должна содержать следующие элементы:
- Таблица «Типы автобусов»: код автобуса; марка автобуса; количество мест.
- Таблица «Парк»: код автобуса; гаражный номер; государственный номер; год выпуска.
- Таблица «Водители»: табельный номер водителя; Ф.И.О.; дата рождения; оклад; номер маршрута.
- Таблица «Перевозки»: дата; код автобуса; номер маршрута; табельный номер водителя; время выхода автобуса на маршрут; время прибытия автобуса с маршрута; причина схода автобуса с маршрута; количество проданных билетов
Поле со списком – таблица «Типы автобусов», поле «Марка автобуса».
Поле подстановки – «Код автобуса» в таблице «Парк», источник таблица «Типы автобусов».
Запросы на выборку:
Поле подстановки – «Код автобуса» в таблице «Парк», источник таблица «Типы автобусов».
Запросы на выборку:
- Водители, имеющие оклад от 15000 до 17000 р.
- Автобусы, работавшие на маршруте № 79 в сентябре 2009 г.
- Водители, работающие на автобусах марки «Икарус» на маршрутах № 90 и 104.
Запрос с вычисляемым полем
Длительность маршрута (таблица «Парк»).
Групповой запрос:
Количество автобусов по каждому маршруту (таблица «Парк»).
Запрос с параметром:
Водители, работающие на автобусах по маршруту N
Отчет по перевозкам, сгруппированный по марке автобуса, сортировка по ФИО водителя.
Подробное описание, как можно выполнить такое задание, приведено в нулевом и первом вариантах.
Составляем таблицы и логическую схему, описываем типы данных и другие параметры полей данных (все, как сказано в методичке).
Длительность маршрута (таблица «Парк»).
Групповой запрос:
Количество автобусов по каждому маршруту (таблица «Парк»).
Запрос с параметром:
Водители, работающие на автобусах по маршруту N
Отчет по перевозкам, сгруппированный по марке автобуса, сортировка по ФИО водителя.
Подробное описание, как можно выполнить такое задание, приведено в нулевом и первом вариантах.
Составляем таблицы и логическую схему, описываем типы данных и другие параметры полей данных (все, как сказано в методичке).
Запускаем СУБД MS Access, создаем таблицы, устанавливаем связи.
Схема базы данных в MS Access.
Справочник –классификатор – «Типы автобусов», справочники – «Парк» и «Водители», таблица «Перевозки» является основной и содержит всю информацию о перевозках за каждый день. Все связи между таблицами показаны на рисунке, тип связей – «один-ко-многим».
Сейчас о запросах.
Первый запрос на выборку:
Первый запрос на выборку:
Как видим, простейший однотабличный запрос.
Второй запрос на выборку
Запрос тоже несложный. У меня выбраны для него все четыре таблицы, хотя достаточно было бы двух («Перевозки» и «Водители») и трех полей (номер маршрута, ФИО и дата выезда). Просто так понятнее. Но необязательно.
Третий запрос на выборку
Третий запрос на выборку
Запрос с вычисляемым полем
Здесь нам нужно посчитать длительность маршрута, то есть разницу во времени между выходом на маршрут и прибытием с маршрута. Чтобы вычислить разницу, вычтем из времени прибытия время выхода. Это делается без всяких дополнительных функций, простым вычитанием. Но затем нужно перевести полученное значение в формат времени, для этого используется функция CDate(). Если кликнуть правой кнопкой мыши на построенное поле в запросе и выбрать пункт «Свойства», то можно установить нужный формат поля (например, краткий формат времени). Полученный результат на рисунке:
Групповой запрос
Вот тут тоже такой мутный запрос, на мой взгляд. Нужно сгруппировать автобусы по номеру маршрута. По заданию автобусы никак к номеру маршрута не привязаны. Привязаны водители, и то не сильно, потому что в таблице «Перевозки» тоже есть номер маршрута. То есть, если водитель работает по умолчанию на первом маршруте, то он может выйти в рейс на сто первом, и на справочнике водителей это не отразится. Да и на одном автобусе может работать несколько водителей, как напарники. То есть группировать по водителям нельзя. Если же мы группируем по номеру маршрута из таблицы «Перевозки», то у нас, естественно, получается количество автобусов по каждому маршруту, которые когда-либо выходили в рейс на этом маршруте. Цифра гораздо больше, чем общее количество автобусов.
Логично было бы считать количество автобусов на маршруте за какую-либо дату. То есть добавить в запрос поле «Дата» как условие.
Но делаем по заданию.
Запрос с параметром
Логично было бы считать количество автобусов на маршруте за какую-либо дату. То есть добавить в запрос поле «Дата» как условие.
Но делаем по заданию.
Запрос с параметром
Делаем отчет. Многотабличный запрос
Отчет в режиме конструктора:
Итоги считаем по проданным билетам.
