Запрос с вычисляемым полем Раздел 3. Создание запросов 3.1. Определение Запросы – объекты СУБД Access, предназначенные для отбора данных, которые удовлетворяют заданным критериям. Создание запросов Запрос с условием Задание: создать запрос, который будет выводить на экран информацию о накладных, выписанных в декабре 2008 года, содержащих информацию о товарах диск CD-R и диск CD-RW. Таблица 1. Символы, используемы в запросах Символы, используемые в запросах | Описание | Пример | >, <, =,<=, >=, <> | | | * | Заменяет любой набор символов в запросе | К* — слова, начинающиеся на букву К; *.01.2008 — любое число января месяца 2008 года | ? | Заменяет один символ в запросе | Сидоров? — после слова Сидоров возможно наличие одного любого символа; 01.01.200? —первое январяс 2000 по 2009 г. | OR | Логическое ИЛИ | *.01.2008 or *.02.2008 — январь или февраль месяц 2008 года; Иванов or Петров — Иванов или Петров | AND | Логическое И | >10 and <=15 — больше 10 и меньше или равно 15 | Between<значение 1>and <значение 2> | МЕЖДУ <значением 1> И <значением 2> | Between 10 and 100 — между 10 и 100 | Алгоритм: 1. В окне базы данных необходимо перейти на вкладку Запросы. 2. Нажать на кнопку Создать и появившемся диалогом окне выбрать режим Конструктор (или выбрать ссылку Создание запроса в режиме конструктора). 3. На экране отобразится окно Добавление таблиц (рис. 3.1), в котором необходимо выделить имена таблиц, участвующих в запросе и нажать кнопку Добавить.  Рис. 3.1. Добавление таблиц в запрос 4. На экране отобразится окно создания запроса, которое состоит из двух частей: в верхней части отображены поля выбранных таблиц, а в нижней – таблица для определения параметров запроса (рис. 3.2)  Рис. 3.2. Окно создания запроса 5. В строке Имя таблицы выбирается имя таблицы, из которой будут взяты данные для запроса, а в строке Поле – поле соответствующей таблицы (рис. 3.3).  Рис. 3.3. Определение полей запроса 6. В строке Условие отбора записываются условия, накладываемые на данные (рис. 3.4).  Рис. 3.4. Задание условий отбора 7. Для просмотра результата необходимо на панели инструментов нажать кнопку . Результат запроса отобразится в виде временной (динамической) таблицы (рис. 3.5).  Рис. 3.5. Просмотр результатов запроса Задание: найти товары, проданные в количестве от 10 до 50 или с ценой более 10000. В строке Условие отбора записываются условия, накладываемые на данные (рис. 3.6).  Рис. 3.6. Условие отбора Для просмотра результата необходимо на панели инструментов нажать кнопку . Результат запроса отобразится в виде временной (динамической) таблицы. Цифрой (1) обозначены записи удовлетворяющие первому условию – цена более 10000, цифрой (2) – записи удовлетворяющие второму условию – количество между 10 и 50 (рис. 7).  Рис. 3.7. Результат запроса Запрос с параметром Задание: создать запрос, который будет выводить на экран накладные, содержащие информацию о товаре, наименование которого вводит пользователь. Для создания запроса с параметром в строке Условие отбора под соответствующим полем в квадратных скобках записывается параметр: [Введите <имя поля>] (рис. 8).  Рис. 3.8. Запрос с параметром При вызове запроса на экране появляется окно Введите значение параметра с полем для ввода значения параметра (рис. 9 а). Результат запроса отобразится в виде динамической таблицы (рис. 9 б). а б  Рис. 3.9. Результат выполнения запроса: а) окно для ввода параметра; б) результат выполнения запроса Задание: создать запрос, который будет выводить на экран информацию о накладных, выписанных в заданном диапазоне дат, где начальную и конечную даты диапазона вводит пользователь. При создании запроса в строке Условие отбора под полем Дата в квадратных скобках записываются два параметра (рис. 3.10).  Рис. 3.10. Запрос с двумя параметрами При вызове запроса на экране последовательно появятся два окна для ввода начальной и конечной даты диапазона (рис. 3.11).  Рис. 3.11. Окна для ввода значений параметров Результат запроса отобразится в виде динамической таблицы (рис. 3.12).  Рис. 3.12. Результат выполнения запроса Запрос с группировкой Запрос позволяет для групп однотипных данных подводить итоги: подсчитывать их количество, сумму, среднее и т.д. Задание: Создать запрос, который будет подсчитывать суммарное количество товара по каждой накладной. Рассмотрим данные таблицы «Накладные» (рис. 3.13). В таблице значения столбца «Номер накладной» повторяются многократно (в зависимости от того, сколько товаров продано по накладной). Необходимо создать запрос, который будет для накладных с одинаковым номером суммировать количество товара. Для лучшего понимания того, какой результат должен получиться в запросе на рис. 3.13, справа, фигурными скобками, выделены записи, в которых номера накладных совпадают и рассчитано суммарное количество товара. Рис. 3.13. Таблица «Накладные» Для реализации запроса в режиме конструктора добавляется дополнительная строка Групповые операции (рис. 3.14) нажатием на панели инструментов кнопки . Под полем № накладной в строке Групповые операции выбирается команда Группировка (накладные с одинаковым номером группируются), а под полем Кол-во — команда Sum (количество суммируется).  Рис. 3.14. Группировка данных в запросе Результат выполнения запроса представлен на рис. 3.15. (сравните результат с данными рис. 3.13).  Рис. 3.15. Результат выполнения запроса с группировкой Таблица 2. Групповые операции Sum | Суммирование | Avg | Среднее значение | Min | Минимальное значение | Max | Максимальное значение | Count | Количество элементов в столбце | Last | Последний элемент | First | Первый элемент | Условие | Указывает на логическое выражение | Выражение | Указывает на то, что поле вычисляемое | Запрос с вычисляемым полем Запрос позволяет создавать виртуальные поля, которых нет в таблицах, но значения которых рассчитываются используя данные таблиц. Задание: создать запрос, который позволяет рассчитать стоимость товаров по каждой накладной. При создании запроса с вычисляемым полем на экране, в итоговой таблице запроса, отображается поле, которого нет в исходных таблицах, значение которого вычисляется по заданной формуле. Синтаксис вычисляемого поля: Имя поля : формула Примечание: в формуле заголовки столбцов таблицы записываются в квадратных скобках.  Рис. 3.16. Создание вычисляемого поля Результат выполнения запроса представлен на рис. 3.17.  Рис. 3.17. Результат выполнения запроса с вычисляемым полем Запросы-действия Запрос на обновление Задание: создать запрос, который позволяет для заданного товара в таблице «Справочник товаров» изменять его цену. При создании запроса на обновление необходимо указать тип запроса. Для этого в режиме конструктора выбирается пункт меню Запрос и нажимается команда Обновление рис. 18. на экране в окне запроса добавляется новая строка Обновление.  Рис. 3.18. Выбор типа запроса Далее в раздел Поле добавляются поля Товар и Цена. Под полем Товар в строке Условие отбора записывается параметр [Введите товар], а под полем Цена, в строке Обновление, записывается параметр [Введите новую цену] (рис. 3.19).  Рис. 3.19. Запрос на обновление в режиме конструктора При выполнении запроса на экране появятся два окна. В первом окне необходимо ввести наименование товара цену которого требуется изменить (например, монитор), а во втором окне – новую цену товара (рис. 3.20). Далее на экране появится окно с сообщение о том количестве записей, которое будет обновлено (рис. 3.21). После выполнения запроса исходные данные в таблице изменятся (рис. 3.22).  Рис. 3.20. ввод параметров  Рис. 3.21. Информационное сообщение о количестве обновленных записей а б  Рис. 22. Таблица «Справочник товаров»: а) данные до обновления; б) данные после обновления Запрос на удаление Задание: создать запрос, который позволяет удалять из базы данных накладные, дата выдачи которых меньше 01.01.2000. При создании запроса на удаление необходимо указать тип запроса. Для этого в режиме конструктора выбирается пункт меню Запрос и нажимается команда Удаление (см. рис. 3.18). На экране в окне запроса добавляется новая строка Удаление. Добавим таблицу «Справочник накладных». В раздел Поле добавляется поле Дата. Под ним в строке Условие отбора записывается условие < 01.01.2000 (рис. 3.23).  Рис. 3.23. Запрос на удаление в режиме конструктора В результате работы запроса из базы данных будут удалены все накладные, удовлетворяющие запросу, в том числе и из таблицы «Накладные». |