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

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

Формирование запросов к БД при помощи конструктора.

Запрос — это также специальный объект MS Access, который обеспечивает выборку и представление данных из одной или нескольких таблиц в соответствии с определенными параметрами и критерием отбора, а также выполнением вычислительных и групповых операций. Простейшие запросы можно создать при помощи мастера, но запросы, состоящие из данных нескольких таблиц, лучше создавать при помощи конструктора.

Для создания запроса в режиме конструктора следует выполнить двойной щелчок мышью на соответствующем ярлыке в окне базы данных на вкладке Запросы. Далее в появившемся окне Добавление таблицы добавить необходимые таблицы в окружение данных, при этом необходимо следить за корректностью связей, отображаемых в окружении данных: лишние связи удалять, недостающие создавать здесь же вручную мышкой.

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

Сортировка записей по одному полю

Исходный порядок записей таблицы определяется порядком их ввода с учетом значений первичного ключа. Например, для созданной таблицы «Водители» записи будут упорядочены по полю «Табельный номер» (рис. 2.1)

Рисунок 2.1 – Исходный порядок записей таблицы «Водители»

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

Рисунок 2.2 – Порядок отображения записей таблицы «Водители» после сортировки по полю «Фамилия»

Установленный порядок сортировки можно просмотреть/изменить вызвав свойства таблицы в режиме конструктора (например, с использованием пункта «Свойства» контекстного меню или «Вид»-«Свойства» главного меню, или нажатием комбинации клавиш Alt+Enter).

Рисунок 2.3 – Просмотр заданного порядка сортировки

Сортировка записей по нескольким полям

Для сортировки по нескольким полям следует воспользоваться фильтром или запросом. В случае использования фильтра необходимо выбрать пункт меню «Записи» -«Фильтр»-«Расширенный фильтр» и в появившемся окне конструктора фильтра задать поля, по которым необходимо выполнить сортировку и её порядок (по возрастанию, либо по убыванию) рис. 2.4.

Рисунок 2.4 – Задание порядка сортировки по нескольким полям с использованием фильтра

Установленный порядок сортировки можно просмотреть/изменить вызвав свойства таблицы в режиме конструктора (например, с использованием пункта «Свойства» контекстного меню или «Вид»-«Свойства» главного меню, или нажатием комбинации клавиш Alt+Enter). Поля, по которым осуществляется сортировка задаются в через запятую.

Рисунок 2.5 – Просмотр заданного порядка сортировки по нескольким полям

Использование вычисляемых полей

Часто на основе данных, которые хранятся в БД необходимо выполнять различные вычисления. Например, на основе даты рождения водителя – его возраст к настоящему моменту или стаж работы на предприятии на основе даты приема и т.п. Для таких целей предназначены вычисляемые поля, которые задаются в запросах.

Например, для получения списка водителей с указанием их возраста необходимо в окне объектов БД перейти на вкладку «Запросы» и выбрать пункт «Создание запроса в режиме конструктора». После этого, в появившемся окне (рис. 2.6) выбрать таблицу «Водители» и добавить её в источники данных запроса (нажатием кнопки «Добавить»).

Рисунок 2.6 – Добавление таблицы в запрос

Далее, в появившемся окне конструктора запросов необходимо выбрать поля, которые будут отображаться (например, «Табельный номер», «Фамилия». «Имя», «Отчество») а также задать выражение для вычисляемого поля «Возраст» (рис. 2.7).

Рисунок 2.7 – Задание в запросе вычисляемого поля «Возраст»

Вычисляемое поле задается в таком формате:

<название поля>: <выражение>

где <название поля> - текст, который будет отображаться в заголовке столбца данных вычисляемого поля;

<выражение> - формула, по которой будет рассчитано значение вычисляемого поля.

Для рассматриваемого примера (определение возраста водителя в полных годах) значение поля будет определяться как разность текущего года и года рождения водителя. При этом будут использованы такие функции:

Now – функция определения текущей даты и времени;

Year – функция выделения года из значения даты (например, Year(Now) – возвращает значение текущего года).

Для указания того, что из значения текущего года необходимо вычитать значение года рождения используется функция Year с такими параметрами:

Year([ВОДИТЕЛИ]![ДАТА_РОЖДЕНИЯ]).

где [ДАТА_РОЖДЕНИЯ] – поле таблицы «Водители», которое содержит дату рождения.

Для выполнения запроса следует нажать кнопку на панели инструментов, либо выбрать пункт контекстного меню «Режим таблицы», либо команду главного меню «Запрос»-«Запуск» (рис. 2.8).

Рисунок 2.8 – Запуск запроса на выполнение

Результат работы запроса с вычисляемыми полями приведен на рис. 2.9.

Рисунок 2.9 – Результат выполнения запроса с вычисляемым полем «Возраст»

Аналогично определяется стаж работы водителя на данном предприятии:

Year(Now)-Year([ВОДИТЕЛИ]![ДАТА_ТРУДОУСТРОЙСТВА])

возраст автомобиля, количество лет, прошедших с даты медосмотра и т.п.

Для формирования списка пунктов назначения с указанием количества топлива, необходимого для проезда к ним (из расчета 11л / 100 км) в вычисляемом поле «Топливо» используется формула (рис. 4.10):

Топливо: [ПУНКТЫ_НАЗНАЧЕНИЯ]![РАССТОЯНИЕ]*11/100

Рисунок 2.10 – Результат выполнения запроса с вычисляемым полем «Топливо»

Использование групповых операций

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

Таблица 2.1 – Основные групповые операции

Sum

Сумма значений поля.

Avg

Среднее от значений поля.

Min

Наименьшее значение поля.

Max

Наибольшее значение поля.

Count

Количество значений поля без учета пустых (Null) значений.

Применение групповых операций рассмотрим на примере определения общего количества водителей. Для этого необходимо в окне объектов БД перейти на вкладку «Запросы» и выбрать пункт «Создание запроса в режиме конструктора». После этого, в появившемся окне (см. рис. 2.6) выбрать таблицу «Водители» и добавить её в источники данных запроса (нажатием кнопки «Добавить»).

Чтобы задать групповую операцию определения количества записей (Count) необходимо выбрать поле, по которому будет выполняться подсчет записей (обычно в качестве такого поля выбирается уникальное ключевое поле). В данном примере для этого целесообразно выбрать поле «Табельный номер». Далее необходимо включить возможность использования групповых операций, нажатием на кнопку на панели инструментов. После этого в окне конструктора запроса добавится строка «Групповая операция» (рис. 2.11).

Рисунок 2.11 – Конструктор запроса с групповой операцией определения общего количества водителей

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

Для лучшего восприятия результата выполнения запроса имеет смысл задать подпись поля, указав перед его именем текст «Всего водителей:».

Рисунок 2.12 – Результат выполнения запроса с групповой операцией определения общего количества водителей

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

Групповые операции применимы и к вычисляемым полям. Например, для определения среднего возраста (в годах) водителей, работающих на предприятии необходимо вначале задать вычисляемое поле «Возраст» (см. п. 4.3) а затем применить к нему групповую операцию определения среднего значения Avg (рис. 2.13).

Рисунок 2.13 – Конструктор запроса с вычисляемым полем и групповой операцией определения среднего возраста водителей

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

Рисунок 2.14 – Результат выполнения запроса с вычисляемым полем и групповой операцией определения среднего возраста водителей