Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ЛабAccess.doc
Скачиваний:
20
Добавлен:
20.03.2016
Размер:
391.17 Кб
Скачать
  1. Закройте запрос с сохранением, присвоив ему имя договоры простой.

    1. Создание запросов с фильтрами по совпадению и по условию

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

  1. Сделайте копию запроса ДОГОВОРЫ ПРОСТОЙ. Назовите ее ДОГОВОРЫ ПРОСТЫЕ ФИЛЬТРЫ и откройте в режиме конструктора.

  2. В строку Условие отбора в полях Продукт и Фирма введите значения, которые есть в таблице ДОГОВОРЫ (например, Свинина и Большой буйвол). Посмотрите результаты.

  3. Перенесите название фирмы на строку Или. Посмотрите результаты.

Вывод. Если условия по разным полям размещены в одной строке, то отбираются записи, в которых выполняются все условия одновременно, а если они расположены в разных строках, то отбираются записи, в которых выполняются условия хотя бы одной из строк.

  1. Наложите фильтр по условию на дату поставки. Выберите дату в середине диапазона дат, введенных в таблицу ДОГОВОРЫ. В строку Условие отбора в поле ДатаПоставки введите выбранное условие, например: “>01.02” или “<01.03” (если год в дате не указан, то предполагается текущий год). Посмотрите результат фильтрации.

  2. Усложните фильтр, задав диапазон дат. Для того чтобы задать одновременное выполнение нескольких условий на одно поле, надо перенести его название в нижнюю часть бланка соответствующее число раз и в одной и той же строке в каждой колонке задать по одному условию. Если условия по другим полям занимали несколько строк, то фильтр по датам надо повторить в каждой. Выберите пару дат из того диапазона, который присутствует в таблице ДОГОВОРЫ, и отфильтруйте договоры, приходящиеся на этот промежуток времени.

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

  4. Откройте этот запрос в режиме конструктора и посмотрите, как переписано условие по датам. В дальнейшем несколько условий по одному полю можно сразу оформлять так, как это сделал за Вас Конструктор запросов.

Вывод. Если в фильтре указаны конкретные значения для отбора данных, то при повторных обращениях к запросу он будет отбирать данные только с этими значениями.

    1. Создание параметрических запросов

Конкретные значения в фильтре можно заменять параметрами  – условными обозначениями тех операндов, которые входят в критерии фильтрации. Параметры надо заключать в квадратные скобки [ ]. При каждом открытии запрос выдает на экран окна ввода для всех своих параметров. Если при повторном открытии ввести значения, не совпадающие с предыдущими, то один и тот же запрос будет выводить на экран разные группы данных. Это расширяет диапазон вопросов, обрабатываемых одной и той же программой. В качестве параметра можно использовать любой текст, не совпадающий с названиями полей.

  1. Сделайте копию запроса ДОГОВОРЫ ПРОСТОЙ и назовите ее ДОГОВОРЫ С ПАРАМЕТРАМИ. Откройте этот запрос в режиме конструктора.

  2. В строку Условие отбора поля Продукт введите текст: “[Какой продукт?]” (квадратные скобки обязательны, кавычки не вводятся). Введенный в скобки текст не должен в точности совпадать ни с одним из названий полей. Обычно он поясняет, что надо ввести с клавиатуры, для начала работы запроса. В нашем случае можно было бы ввести просто “Продукт?”.

  3. Перейдите в режим таблицы. В появившееся окно Введите значение параметра введите название какого-либо продукта.

  4. Закройте запрос с сохранением.

  5. Снова откройте этот запрос и введите название другого продукта. Посмотрите записи, которые на этот раз запрос вывел на экран.

  6. Вернитесь в режим конструктора и добавьте параметрические фильтры по полям Фирма и ДатаПоставки. Для условий параметр вводится только на значение, например: “>[Начало поставок?]”. Сохраните изменения. Несколько раз откройте запрос, вводя в качестве параметров разные продукты, фирмы, даты.

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

    1. Создание параметрических запросов по маске

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

  1. ‘*’ – на этом месте допустимо любое количество любых символов, в частности, их отсутствие;

  2. ‘?’ – на этом месте допустим только один какой-нибудь символ или его отсутствие.

Например, если мы не знаем, как в базу введено название продукта: “картофель” или “картошка”, то маски “карто*” или “карт*” объединят ссылки на обе версии названия (напоминаем: кавычки вводить не надо!).

  1. Сделайте копию запроса ДОГОВОРЫ С ПАРАМЕТРАМИ и назовите его ДОГОВОРЫ С МАСКОЙ, откройте его в режиме конструктора.

  2. Перед параметрами [Какой продукт?] и [Какая фирма?] введите слово “like”. Перейдите в режим таблицы. В окна ввода параметров введите символ ‘*’ вместо названий продукта и фирмы. Параметры-даты введите полностью. Проанализируйте выведенные записи.

Вывод. Маска ‘*’означает любое значение в данном поле.

  1. Закройте запрос с сохранением, снова откройте его и введите маски названий каких-либо продуктов, например, вместо слова “свинина” введите “св*” или “с*”, вместо названия поставщика введите, например, “в*”. Проанализируйте выведенные записи.

  2. Откройте запрос несколько раз, вводя разные варианты масок для условий фильтрации.

Вывод. Запрос по маске облегчает ввод параметров. Его также удобно применять, когда точно неизвестно, как введено значение в базу: “Сахар” или “Сахарный песок” и т. п.

    1. Создание запросов, анализирующих незаполненные поля

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

  1. Сделайте копию запроса ДОГОВОРЫ ПРОСТОЙ и назовите ее ДОГОВОРЫ НЕОПЛАЧЕННЫЕ. Откройте этот запрос в режиме конструктора.

  2. В поле ДатаОплаты в строке Условие отбора введите “null”. Перейдите в режим таблицы. Заметьте количество отобранных записей. Закройте запрос с сохранением.

  3. Откройте таблицу ДОГОВОРЫ и введите даты оплаты в нескольких записях с пустыми значениями этого поля. Закройте таблицу с сохранением.

  4. Откройте запрос ДОГОВОРЫ НЕОПЛАЧЕННЫЕ. Заметьте количество отобранных записей на этот раз.

    1. Создание запросов с расчетными полями

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

  1. Откройте запрос ДОГОВОРЫ ПРОСТОЙ в режиме конструктора. В строке Поле первого пустого столбца введите

“Стоимость: [Количество]*[Цена]”

(пробел после двоеточия обязателен). Перейдите в режим таблицы.

Вывод. Текст, расположенный до двоеточия – название расчетного поля, то, что размещено после двоеточия – формула для получения значений этого поля. Названия полей, из которых берутся данные для расчетов, надо заключать в [ ].

  1. Вернитесь в режим конструктора. Удалите все прежние сортировки. Введите по расчетному полю Стоимость сортировку по убыванию.

Вывод. Расчетное поле в запросе обладает теми же возможностями для просмотра, что и базовые поля, взятые из таблиц. Поэтому результаты расчетов не хранят в постоянных таблицах.

  1. Закройте запрос с сохранением изменений.

  2. Самостоятельная работа. Создайте на базе таблицы ПРОДУКТЫ запрос ГРАНИЦЫ ЗАПАСА с расчетными полями “МинНорма: [Норма]-[Допуск]” и “МаксНорма: [Норма]+[Допуск]”.

    1. Создание групповых запросов

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

Создадим запросы ИТОГИ ПРОДУКТ и ИТОГИ ПОСТАВЩИК, в которых для каждого продукта (поставщика) будут представлены обобщенные характеристики заготовок.

  1. Создайте запрос ИТОГИ ПРОДУКТ по аналогии с запросом ДОГОВОРЫ ПРОСТОЙ (см. задание I). В запрос введите поля Продукт, Количество, Цена, Цена, Цена, ДатаПоставки из таблиц ПРОДУКТЫ и ДОГОВОРЫ.

  2. Щелкните правой кнопкой в нижней части бланка и закажите в контекстном меню Групповые операции (или найдите эту команду в меню Вид). В бланке появляется строка Групповая операция, в которой по умолчанию во всех полях вставлено значение Группировка.

  3. С помощью выпадающего списка замените значение Группировка:

– в поле Количество на Sum (сумма);

– в полях Цена соответственно на Avg (среднее значение), Min (минимальное), Max (максимальное);

– в поле ДатаПоставки на Min.

  1. Перейдите в режим таблицы. Посмотрите результаты работы запроса.

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

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

  2. Сохраните запрос под именем ИТОГИ ПРОДУКТ.

  3. Откройте этот запрос в режиме конструктора и посмотрите, как переписана формула и групповая операция в расчетном поле Стоимость. В дальнейшем расчетные поля групповых запросов можно сразу оформлять так, как это сделал за Вас Конструктор запросов.

  4. Самостоятельная работа. Аналогично предыдущему (аналогично не значит точная копия!) создайте запрос ИТОГИ ПОСТАВЩИК со следующими итогами по каждому поставщику:

– количество договоров с ним: функция Cоunt по любому полю;

– общая стоимость всех договоров: расчетное поле

“Стоимость: Sum([Количество]*[Цена])”

(в строке Групповая операция значение Выражение).

    1. Использование нескольких запросов для получения нужных сведений

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

Создадим групповой запрос ПРОДУКТОВ НЕДОСТАТОЧНО, представляющий сведения о продуктах, для которых общий запас, обеспеченный договорами, меньше минимально необходимого.

  1. Откройте бланк Конструктора запросов (Запросы Создать Конструктор).

  2. В окне Добавление таблицы на вкладке Запросы выделите запросы ГРАНИЦЫ ЗАПАСА и ИТОГИ ПРОДУКТ, затем нажмите кнопки <Добавить>, <Закрыть>.

  3. Зацепите мышью поле Продукт из окна ГРАНИЦЫ ЗАПАСА и наложите его на поле Продукт в окне ИТОГИ ПРОДУКТ. Эта процедура показывает, что можно соединять только те записи из разных таблиц, у которых в этих полях находятся одинаковые значения.

  4. Щелкните правой кнопкой мыши на линии связи между полями, выберите в контекстном меню Параметры объединения и в открывшемся окне выберите пункт Объединение всех записей из ГРАНИЦЫ ЗАПАСА и только тех записей из ИТОГИ ПРОДУКТ, в которых связанные поля совпадают. Эта процедура уточняет способ объединения записей из разных запросов.

  5. Перенесите в нижнюю часть бланка:

– из таблицы ГРАНИЦЫ ЗАПАСА поля Продукт и МинНорма;

– из таблицы ИТОГИ ПРОДУКТ поле Sum-Количество.

  1. В поле Sum-Количество в строке Условие отбора введите условие “<[МинНорма]”. По этому условию Access сравнит в каждой записи значения в полях Sum-Количество и МинНорма и отфильтрует только те записи, в которых общее количество запаса меньше нужного.

  2. Создайте расчетное поле:

“Нехватка: [МинНорма]-[Sum-Количество]”.

  1. Перейдите в режим таблицы и посмотрите результаты. Закройте запрос с сохранением под именем ПРОДУКТОВ НЕДОСТАТОЧНО.