
- •Санкт-Петербургский
- •Оглавление
- •Запуск Access
- •Интерфейс пользователя Access
- •НастройкиAccess
- •Создание новой бд
- •Таблицы
- •Создание структуры таблицы
- •Типы данных
- •Свойства полей
- •Загрузка таблицы данными
- •Модификация структуры таблицы
- •Работа с макетом таблицы
- •Печать таблицы
- •Запросы
- •Типы запросов
- •Создание qde-запросов
- •Заполнение бланка запроса
- •Работа с построителем выражений
- •Примеры запросов
- •Запросы на выборку данных
- •Запросы на создание таблицы
- •Запросы на добавление записей
- •Insert into Det ( dim, cena )
- •Insert into Det ( dim, cena )
- •Values ("шайба", 40);
- •Insert into Новая ( pim, gor )
- •Запросы на удаление записей
- •Запросы на обновление полей записей
- •Перекрестные запросы
- •Вложенные запросы
- •Sql-запросы
- •Фильтрация данных
- •13.1. Создание однотабличной формы
- •13.2. Редактирование формы
- •13.3. Часто используемые свойства формы
- •13.4. Элементы управления на форме и их свойства
- •14. Отчеты
- •14.1. Создание отчета
- •14.2. Работа с отчетом в режиме конструктора
- •14.3. Сортировка и группировка данных
- •15. Макросы
- •15.1. Создание макросов
- •15.2. Краткая характеристика основных макрокоманд
- •15.3. Групповые макросы
- •15.4. Реализация ветвлений в макросах
- •15.4.1. Примеры макросов с односторонним ветвлением
- •15.4.2. Пример макроса с двусторонним ветвлением
- •15.5. Реализация циклов в макросах
- •16. Основы создания пользовательского интерфейса
- •16. 1. Взаимодействие форм
- •16. 2. Требования, предъявляемые к интерфейсу пользователя
- •Литература
Примеры запросов
Пусть БД состоит из трех взаимосвязанных таблиц (схема данных дана на рисунке 16):
Рисунок 24 – Таблица Post
Рисунок 25 – Таблица Det
Рисунок 26 – Таблица PD
Запросы на выборку данных
Открыть бланк для конструирования запроса:
активизировать на ленте вкладку Создание;
в разделе Другие выбрать Конструктор запросов;
в открывшемся окне выбрать нужную таблицу/таблицы;
заполнить бланк в соответствии с заданием.
Активизировать копку Выполнить:
Запрос 1. Вывести все сведения о гайках из таблицы Det:
Рисунок 27– Однотабличный запрос на выборку данных
Пояснения
В первом столбце ответа выбрана звездочка. Это значит, что в ответе будут отображаться все поля из таблицы Det. Поскольку требуется вывести сведения только о гайках, то нужен еще один столбец DIM в конструкторе запроса, для которого нужно указать условие отбора. Так как гайка – это текстовый литерал, то его надо заключить в двойные кавычки. Однако содержимое столбца DIM повторно отображать не надо, поэтому в столбце DIM надо выключить флажок Вывод на экран.
На языке SQL этот запрос будет выглядеть так:
SELECT Det.*
FROM Det
WHERE (((Det.DIM)="гайка"));
Запрос 2. Запрос с параметром. Вывести все сведения о заданных деталях. Имя детали вводить в диалоге. Запрос будет похож на предыдущий запрос, но в условии отбора вместо слова гайка нужно в квадратных скобках написать текст, который не был бы именем поля, но давал бы пользователю подсказку, что ему вводить:
Рисунок 28 – Однотабличная выборка с параметром
При выполнении запроса с параметром откроется окно для ввода имени детали. Вводимое имя не надо заключать в кавычки (как на рисунке 29):
Рисунок 29 – Ввод значения параметра
Запрос 3. Многотабличный булевский запрос на выборку данных. Вывести все сведения о поставщиках, поставляющих детали заданного наименования И проживающих в Москве:
Рисунок 30 – Многотабличный булевский запрос (операция И) с параметром
Соответствующий SQL-запрос:
SELECT Post.*, Det.DIM
FROM Post INNER JOIN (Det INNER JOIN PD ON Det.DN = PD.DN) ON Post.PN = PD.PN
WHERE (((Post.GOR)="Москва") AND ((Det.DIM)=[Введите наимнование детали]));
Запрос 4. Многотабличный булевский запрос на выборку данных. Вывести все сведения о поставщиках, поставляющих гайки ИЛИ проживающих в заданном городе.
Рисунок 31 – Многотабличный булевский запрос (операция «ИЛИ») с параметром
Соответствующий SQL-запрос:
SELECT Post.*, Det.DIM, PD.KOL
FROM Post INNER JOIN (Det INNER JOIN PD ON Det.DN = PD.DN) ON Post.PN = PD.PN
WHERE (((Post.GOR)=[Введите город])) OR (((Det.DIM)="гайка"));
Следует отметить, что при конструировании многотабличного QBE-запроса обязательно нужно выносить в верхнюю часть бланка связанные таблицы. Если Вы выносите в запрос поля из несвязанных таблиц (как показано на рисунке 32), то нужно обязательно добавить еще хотя бы одну таблицу, чтобы все таблицы оказались связанными (несмотря на то, то поля добавляемой таблицы в запросе могут не использоваться). Если этого не сделать, то в ответе можно получить очень большое количество записей (декартово произведение).
Рисунок 32 – Так делать нельзя
Запросы на выборку – это самые простые и часто встречающиеся запросы. Для создания других типов запросов рекомендуется действовать по следующей схеме:
сначала создать запрос на выборку данных;
затем созданный запрос на выборку преобразовать в запрос другого типа.
Запрос 5. Запрос на выборку с вычисляемым полем.
Можно запрос на выборку реализовать так, то в ответе появится поле, которого нет в таблице, и значение которого вычисляется на основе данных, содержащихся в таблице. Такое поле называют вычисляемым. В качестве примера рассмотрим запрос на выборку данных из таблицы Det, который выводит информацию о деталях, включая старую цену (поле CENA) и новую цену деталей, увеличенную на 10%. Другими словами, все детали подорожали на 10%. В таблице Det никаких изменений делать не надо.
QBE-запрос в режиме конструктора показан на рисунке 33.
Рисунок 33 – Запрос с вычисляемым полем
В запросе использованы псевдонимы: старая цена и новая цена. Поле с новой ценой – вычисляемое. Для того чтобы новая цена отображалась в денежном формате, нужно выделить поле с новой ценой и открыть из к.з. меню окно свойств, в котором для свойства Формат поля из списка выбрать Денежный.
Соответствующий SQL-запрос:
SELECT Det.DIM, Det.CENA AS [старая цена],
[Det]![CENA]*1.1 AS [новая цена]
FROM Det;
Запрос 6. Запрос на выборку с группировкой данных.
Группирование данных позволяет получать статистическую, итоговую и другую информацию по отдельным группам данных. Группировать данные можно по одному или нескольким полям. При этом в одну группу включаются данные с одинаковыми значениями в поле группирования. Например, все записи, сгруппированные по номеру поставщика образуют столько групп, сколько имеется разных значений в полеPN.
При работе с группами данных в бланк запроса нужно добавить строкуГрупповаяоперация:
Итоги из
к.з.
меню, открытого в нижней части бланка
запроса или кнопкой Итогиналенте
Для каждого поля в строкеГрупповаяоперацияможет быть выбрано:
Группировка- означает, что данное поле является полем группирования (устанавливается по умолчанию);
Sum-суммирование всех значений поля по группе данных;
Avg-среднее значение поля по группе;
MinилиMax-минимальное или максимальное значение поля в группе;
Count-количество записей, входящих в группу;
StDev-среднеквадратическое отклонение;
Var–дисперсия;
FirstилиLast-первое или последнее значение поля в группе;
Выражение-позволяет ввести выражение вместо имени поля в строкеПолебланка запроса;
Условие-показывает, что это поле используется только для задания условия отбора данных в запросе. Это поле не отображается в динамическом наборе данных.
Если группировка производится по нескольким полям, то словоГруппировкадолжно быть в каждом из них.
На рисунке 34 показан QBE-запрос с группировкой данных по полю PN.Функция Count вычисляет количество записей в каждой группе, а функция Sum - суммарное количество деталей в каждой группе. Псевдонимы: количество записей в группе и суммарное количество добавляются вручную.
Рисунок 34 – Запрос с группировкой данных
Соответствующий SQL-запрос:
SELECT PD.PN, Count(PD.PN) AS [крличество записей в группе],
Sum(PD.KOL) AS [суммарное количество]
FROM PD
GROUP BY PD.PN;