Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДИЧКА ОБД Ч1.doc
Скачиваний:
3
Добавлен:
19.11.2019
Размер:
3.23 Mб
Скачать

Лабораторная работа №3

Тема: Использование фильтров и создание запросов к одной таблице.

Цель: изучение средств MS Access 2003 для фильтрации данных из БД и создания запросов к одной таблице с использованием групповых операций..

Теоретические сведения

Для отбора записей из одной таблицы по заданному критерию (или нескольким критериям) используются фильтры.

Самым простым видом фильтра является «Фильтр по выделенному». Для его создания необходимо «мышкой» выделить значение поля (или его часть) и выбрать в главном (или контекстном, появляющемся при нажатии правой кнопки «мышки») меню пункт «Фильтр по выделенному» или нажать на панели инструментов кнопку (рис. 3.1).

Рисунок 3.1 – Создание фильтра «по выделенному» для отбора водителей с фамилией, оканчивающейся на «-ов»

Результат применения фильтра показан на рис. 3.2.

Рисунок 3.2 – Результат применения фильтра «по выделенному» для отбора водителей с фамилией, оканчивающейся на «-ов»

Для отмены фильтрации необходимо «отжать» кнопку на панели инструментов (см. рис. 3.2).

Просмотреть/задать установки фильтра (рис. 3.3) можно в окне свойств таблицы, которое вызывается в режиме конструктора.

Рисунок 3.3 – Установки фильтра

Текст ((ВОДИТЕЛИ.ФАМИЛИЯ Like “*ов”)) в поле «Фильтр» означает, что в таблице «Водители» производиться отбор записей по полю «Фамилия», в котором может быть любой текст (задается символом *), который заканчивается символами «ов» (Like “*ов”). Like - ключевое слово отбора значений.

Большие возможности для отбора записей предоставляет расширенный фильтр. Для задания расширенного фильтра необходимо выбрать пункт меню «Записи»-«Фильтр»-«Расширенный фильтр» и в появившемся окне конструктора фильтра задать поля, по которым необходимо осуществлять отбор данных.

Например, для отбора водителей категории В следует задать такой фильтр (рис. 3.4):

Рисунок 3.4 – Конструктор фильтра отбора водителей категории В

Для отбора водителей категорий В или ВС следует задать такой фильтр (рис. 3.5):

Рисунок 3.5 – Конструктор фильтра отбора водителей категорий В или ВС

В этом случае установки фильтра (рис. 3.6) содержат строку:

(((ВОДИТЕЛИ.КАТЕГОРИЯ)="В")) OR (((ВОДИТЕЛИ.КАТЕГОРИЯ)="ВС"))

которая означает, что записи будут отобраны по полю «Категория» и значение полей может быть «В» либо «ВС». Ключевое слово OR означает «ИЛИ», т.е. выполняться отбор по критерию КАТЕГОРИЯ="В" или КАТЕГОРИЯ="ВС".

Рисунок 3.6 – Конструктор фильтра отбора водителей категорий В или ВС

Если отбор записей необходимо выполнять с учетом значений вычисляемого поля, либо осуществлять групповую операцию над отобранными данными, то необходимо использовать запросы. Например, для определения количества водителей, прошедших медосмотр в этом году, необходимо вначале получить их список (задав критерий отбора Year([ВОДИТЕЛИ]![ДАТА_МЕДОСМОТРА])=Year(Now()), т.е. равенство года медосмотра текущему году), а затем выполнить над выборкой групповую операцию COUNT (для этого в выборке должны быть уникальные поля (например поле «Табельный номер»)). Для этого необходимо в окне объектов БД перейти на вкладку «Запросы» и выбрать пункт «Создание запроса в режиме конструктора». После этого, в появившемся окне (рис. 2.6) выбрать таблицу «Водители» и добавить её в источники данных запроса (нажатием кнопки «Добавить»). В появившемся окне (рис. 3.7) необходимо задать критерий отбора данных, а затем и групповую операцию.

Рисунок 3.7 – Конструктор запроса отбора водителей, прошедших медосмотр в этом году

Результат выполнения запроса для исходных данных рис. 3.8 приведен на рис. 3.9.

Рисунок 3.8 – Исходные данные (таблица «Водители») для запроса отбора водителей, прошедших медосмотр в этом году

Рисунок 3.9 – Результат выполнения запроса отбора водителей, прошедших медосмотр в этом году

Аналогично, например, для определения списка марок автомобилей и количества автомобилей каждой марки соответствующий запрос будет иметь такой вид (рис. 3.10):

Рисунок 3.10 – Конструктор запроса отбора списка марок автомобилей с указанием количества автомобилей каждой марки

Результат выполнения запроса для исходных данных рис. 3.11 приведен на рис. 3.12.

Рисунок 3.11 – Исходные данные (таблица «Автомобили») для запроса отбора списка марок автомобилей с указанием количества автомобилей каждой марки

Рисунок 3.12 – Результат выполнения запроса отбора списка марок автомобилей с указанием количества автомобилей каждой марки

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

DateDiff(<интервал>, дата1, дата2),

где <интервал> - специальная строка символов, показывающая в каких единицах измерения времени необходимо выдать разность (“yyyy” – в годах, “q” – в кварталах, “m” – в месяцах, “d” – в днях, “h” – в часах, “n” – в минутах).

Рисунок 3.13 – Конструктор запроса определения длительности рейсов в часах