Страницы

вторник, 1 октября 2013 г.

Простая бд Access - Телефонная компания

Задание База данных «Телефонная компания» MS Access (9 вариант).
База данных должна содержать следующие элементы:
  • Таблица «Тарифы»: код тарифа; вид тарифа; цена, р./мин.
  • Таблица «Виды льгот»: код льготы; вид льготы; размер, %.
  • Таблица «Абоненты»: лицевой счет; телефон; Ф.И.О.; адрес; код льготы.
  • Таблица «Платежи»: лицевой счет; код тарифа; дата оплаты; сумма платежа; дата отключения за неуплату
Поле со списком – таблица «Виды льгот», поле «Вид льготы».
Поле подстановки – «Код тарифа» в таблице «Платежи», источник таблица «Тарифы».

Запросы на выборку:
  1. Состояние лицевого счета абонента В. Д. Федорова.
  2. Должники, имеющие в 2008 г. льготу «Инвалидность».
  3. Абоненты, отключенные за неуплату во втором квартале 2009 г.
Запрос с вычисляемым полем
Сумма оплаты с учетом льготы абонента  (таблица «Платежи»).

Групповой запрос:
Количество абонентов по каждому виду льготы (таблица «Абоненты»).

Запрос с параметром:
Льготы, которые имеет абонент N

Отчет по абонентам, сгруппированный по виду льготы, сортировка по ФИО абонента.

Подробное описание, как можно выполнить такое задание, приведено в нулевом и первом вариантах.
Составляем таблицы и логическую схему, описываем типы данных и другие параметры полей данных (все, как сказано в методичке).

Запускаем СУБД MS Access и начинаем составлять таблицы. Потом устанавливаем связи.
Схема базы данных в MS Access.


Получилось три справочных таблицы («Льготы», «Тарифы» и «Абоненты») и таблица с информацией о платежах. Связи и ключевые поля видно на схеме.
Делаем запросы.
Первый запрос на выборку:


Второй запрос на выборку


Третий запрос на выборку


Запрос с вычисляемым полем


На скриншоте видно длинную строку вычисляемого поля.  Здесь применяется функция VBA IIf (expr, truepart, falsepart). Эта функция возвращает первый или второй результат в зависимости от истинности условия expr. Если результатом является истина, то вернется truepart, если ложь – то falsepart.
В качестве условия используется функция IsNull (expr), которая проверяет, не равно ли нулю выражение expr. В нашем случае если значение в поле «Льгота» таблицы «Абоненты» равно нулю, то возвращается сумма платежа. Если же у абонента есть льгота, то есть значения поля «льгота» не равно нулю, то возвращается сумма платежа за вычетом рассчитанной по указанному проценту льготы.

Групповой запрос


Запрос с параметром


Делаем отчет. Многотабличный запрос


Отчет в режиме конструктора:


Итоги в отчете не рассчитываются.