Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.19 Mб
Скачать

Перекрестный запрос

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

Подсчитайте суммарную стоимость книжек для каждого года издания по издательствам.

  1. Для этого создайте перекрестный запрос мастером запросов Перекрестный запрос закладка Создание группа Другие. В окнах диалога выберите последовательно таблицу, названия строк, названия столбцов, функцию обработки данных. Для нашего случая это: таблица – Книги; названия строк – Год; названия столбцов – Издательство; функция – Sum(Стоимость). Установим итоговое значение – Итоговое значение по срокам.

Рисунок 19. Результат выполнения перекрестного запроса

  1. Откройте созданный запрос в режиме Конструктор.

Рисунок 20. Конструктор перекрестного запроса

Запросы, которые отбирают данные из нескольких таблиц

При создании таких запросов к верхней части окна конструктора запросов выбираем несколько таблиц. Если связи между таблицами были созданы в окне Схема данных, то в этом окне они появятся автоматически. Теперь можно выбирать в один запрос поля из нескольких таблиц. Существует два разных типа объединения двух таблиц – внутреннее и внешнее. Если объединение внутреннее (именно его вы установили), то в один запрос будут объединены записи, в которых совпадают значения в полях связи. Если какая-нибудь запись в одной таблице не имеет соответствующей записи в другой таблице, то эта запись не будет включена в запрос. Внешнее объединение будет рассмотрено позднее.

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

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

Пеня: [Количество дней задержки]*[Стоимость]*0,01

Имена полей записываются в квадратных скобках.

При записи выражений можно использовать встроенные функции Access. Имена этих функций, в отличие от Excel, не переведены на русский, они пишутся по-английски, но по смыслу многие из них совпадают с функциями Excel. Приведем несколько функций:

IIf(условие; выражение1; выражение2) – вычисляет выражение1, если условие выполняется, и выражение2, если условие не выполняется (совпадает с функцией ЕСЛИ в Excel).

DateDiff(“d”; дата1; дата2) – вычисляет разность между двумя датами в днях. Если первый аргумент “m” – разность дат вычисляется в месяцах, если “y” – в годах.

Полный список всех функций вы найдете в окне Построитель выражений.

Запрос на выборку из двух таблиц

Создайте запрос, который отбирает и объединяет записи из двух таблиц – Книги и Заказ книги, чтобы показать, какие книги были выданы читателям, и содержит вычисляемое поле с именем Пеня, которая начисляется на каждую книгу, не возвращенную своевременно. Размер пени равен 1% от стоимости книги за каждый просроченный день.

  1. Создайте запрос с именем Начисление пени. Для создания запроса перейдите на вкладку Создание и выберите инструмент Конструктор запросов в группе Другие.

  2. Добавьте в запрос таблицы Книги и Заказ книги. В окне схемы данных должна быть показана связь между таблицами по полю Инв№ – инвентарный номер книги.

  3. Перетяните мышью в нижнюю половину окна поля, которые необходимо включить в запрос: Автор, Название, Стоимость, Инв№ (не выводить на экране), Дата выдачи, Дата возврата, Номер. Последнее поле потребуется для связи запроса с таблицей Читатели.

  4. В первой свободной колонке нижней части окна создайте поле, которое вычисляется, с именем Пеня. Для этого наберите в верхней строке, где располагается имя поля, такой текст: Пеня: IIf([Дата возврата]<Date(); DateDiff("d"; [Дата возврата]; Date() )*0,01 *[Стоимость]; 0)

Рисунок 21. Конструктор запроса Начисление пени

Для создания такого выражения можно использовать Построитель выражений. Для этого в группе Настройка запроса выберите инструмент Построить на вкладке Работа с запросами/Конструктор. На экране откроется окно Построителя выражений. В этом окне можно создавать выражение последовательным добавлением к нему полей таблиц или запросов, функций, констант и операторов. Имена полей записываются в квадратных скобках.

Рисунок 22. Использование Построителя выражений

  1. Сохраните запрос под именем Начисление пени. Выполните запрос. Размер пени, разумеется, зависит от текущей даты, на которую он вычислялся. Пример приведен на 29.01.09.

Рисунок 23. Результат выполнения запроса Начисление пени

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]