Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по Access-2.doc
Скачиваний:
22
Добавлен:
01.04.2025
Размер:
826 Кб
Скачать
☆

Теория: Запросы с группировкой

Запросы с группировкой – это важная разновидность запросов, в которых выполняется не просто выборка данных из таблиц, но также выполняются и так называемые «групповые операции» над значениями указанных полей.

Групповыми операциями являются: Count – подсчёт количества записей, Sum – суммирование значений, Max, Min – определение максимального и минимального значений, Avg – вычисление среднего и др.

В следующем упражнении с помощью операции Count будет выполняться подсчёт количества записей в таблице Слушатели, у которых одинаковы значения поля Группа, т.е. будет подсчитано количество слушателей в каждой группе. Кроме того, с помощью операции Sum будет подсчитана выручка по каждой группе.

  1. Создание Запроса «ИнфоГрупп»

    1. В окне базы данных выберите объект «Запросы» и щёлкните по кнопке «Создать». Появится окно «Новый запрос».

    2. В этом окне выберите способ создания запроса – Конструктор.

    3. Включите в запрос таблицу Слушатели и настройте размеры изображения таблицы в верхней части окна конструктора так, чтобы были хорошо видны все поля.

    4. Поместите поля Группа, РегНомер и СуммаОплаты ДВОЙНЫМ щелчком «мыши» в 1-й, 2-й и 3-й столбцы таблицы Конструктора.

    5. В ключите режим группировки данных с помощью инструмента «Групповая операция» на панели инструментов. После этого в таблице Конструктора запросов в строке «Групповая операция:» в трёх столбцах появится выпадающий список групповых операций под именем «Группировка».

    6. Во втором столбце выберите в выпадающем списке «Группировка» операцию Count, т.е. подсчёт количества записей с одинаковыми значениями в поле Группа.

    7. Перед именем поля РегНомер вставьте, т.е. введите псевдоним «Слушателей: » (с двоеточием и пробелом, но без кавычек).

    8. В третьем столбце выберите в выпадающем списке «Группировка» операцию Sum, т.е. подсчёт суммы оплаты (выручки) слушателей с одинаковыми значениями в поле Группа.

    9. Перед именем поля СуммаОплаты вставьте, т.е. введите псевдоним «Выручка: » (с двоеточием и пробелом, но без кавычек).

    10. Проверьте работу запроса щелчком по инструменту «Запуск» . Запрос показывает количество слушателей и выручку в каждой группе. Обратите внимание на «группу номер -». Значение поля Слушателей для неё – это количество слушателей, не зачисленных ни в одну группу.

    11. Сохраните запрос под именем «ИнфоГрупп» и закройте окно запроса.

Теория: Каскадные запросы

Простые запросы извлекают данные из одной-двух таблиц. Сложные запросы извлекают данные из нескольких таблиц и других запросов. Так могут образовы­ваться цепочки (каскад) запросов, осуществляющих последовательный отбор данных. Вам предстоит создать сложный запрос ДляПриказа, в котором используются ранее созданные запросы СпискиГрупп и ИнфоГрупп. Запрос ДляПриказа понадобится Вам при создании отчёта Приказ.

  1. Создание каскадного Запроса «ДляПриказа»

    1. В окне Базы Данных выберите объект «Запросы» и щёлкните по кнопке «Создать». Появится окно «Новый запрос». В этом окне выберите способ создания запроса Конструктор. Появятся окно Конструктора и окно «Добавление таблицы».

    2. В окне «Добавление таблицы», на вкладке «Таблицы», последовательно добавьте в Конструктор запросов таблицы Преподаватели, Группы, Специали­зации, а из вкладки «Запросы» добавьте запрос ИнфоГрупп. Закройте окно «Добавление таблицы».

    3. Расположите изображения таблиц и запроса в верхней части окна конструктора так, чтобы были хорошо видны все поля таблиц и связи между таблицами.

    4. В окне Конструктора должны автоматически отобразиться связи таблиц Преподаватели и Группы по одноимённым полям КодПрепод, таблиц Специали­зации и Группы по одноимённым полям КодСпециал в том виде, как они представлены в Схеме данных. Связь таблицы Группы с запросом ИнфоГрупп по полям соответственно НомерГруппы и Группа необходимо установить «вручную», протаскивая «мышь» от одного поля к другому.

    5. Выберите в таблицах и переместите в соответствующие столбцы Конструктора нужные для запроса поля (в столбцы 1, 2, 3, 4, 5), а другие поля (в столбцах 6, 7, 8) введите в соответствии с нижеследующей вспомогательной таблицей.

Поля запроса ДляПриказа в окне Конструктора

Поле:

НомерГруппы

Специализация

Слушателей

Начало

Окончание

Имя таблицы:

Группы

Специализации

ИнфоГрупп

Группы

Группы

Условие отбора:

<>’-‘

(продолжение таблицы)

Время: Choose([Группы]![Смена]; «9 - 12 час»; «12 - 15 час»; «15 - 18 час»; «18 - 21 час»)

Преподаватель: [Преподаватели]![Фамилия] & « » & Left([Преподаватели]![Имя]; 1) & «.» & Left([Преподаватели]![Отчество]; 1) & «.»

Менеджер: «Волкова И.М.»

Пояснение к таблице «Поля запроса ДляПриказа»:

1) В столбце 1 (НомерГруппы) в строке «Условие отбора» указано условие выбора только сформированных групп. Несформированные группы отмечены как ‘-‘.

2) В столбцах 6 и 7 значения полей формируются с использованием функций языка программирования Visual Basic. Будьте внимательны при вводе скобок и знаков препинания – здесь требуется абсолютная точность.

3) В поле с псевдонимом «Время: » с помощью функции Choose (выбрать) по номеру смены 1, 2, 3 или 4 выбирается время занятий: «9 -12 час», «12 -15 час» и т.д.

4) В поле с псевдонимом «Преподаватель: » из значений полей Фамилия, Имя, Отчество, например, Иванов Иван Иванович, формируется фамилия с инициалами: Иванов И.И. ВАЖНО: после поля [Фамилия] в кавычках стоит ПРОБЕЛ!

5) В поле с псевдонимом «Менеджер: » подставляются конкретная фамилия и инициалы менеджера (в кавычках), которые указываются в приказе, но отсутствуют в базе данных. Так тоже можно!

    1. Сохраните запрос под именем «ДляПриказа».

    2. Проверьте работу запроса щелчком по инструменту «Запуск». Он отбирает из базы все данные, необходимые для формирования приказа о зачислении слушателей. Этот запрос выводит данные по всем группам. Чтобы оставить данные только для одной группы, при использовании запроса нужно применить фильтр.

    3. Закройте окно запроса.