Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть I.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
18 Мб
Скачать
☆

Построение запросов с условием отбора

Условиями отбора называют ограничения, которые накладываются на запрос или фильтр для отбора конкретных записей. Например, требуются сведения не обо всех студентах, а только о тех, кто обучается на бюджетной основе. Для этого следует указать условия отбора, которые позволят включать в набор записей только те, у которых в поле Paym (Форма опл) находится значение "Б" (рис. 29).

Рис. 29. Для поля Paym указано Условие отбора для студентов, обучающихся на бюджетной основе. В результирующей таблице столбец Paym отражаться не будет, т.к. отсутствует галочка в строке Вывод на экран

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

Можно одновременно определить несколько условий отбора для одного поля или для разных полей. При вводе выражений в несколько ячеек Условие отбора Access объединяет их с помощью оператора And или Or. Если выражения находятся в разных ячейках одной и той же строки, используется оператор And. Если выражения находятся в разных строках бланка, применяется оператор Or.

Например, если требуется получить список студентов, не подлежащих призыву в армию, то в него войдут все девушки (поле pol=”ж”), студенты имеющие льготы (поле Lgoty= ДА), мужчины, дата рождения которых позднее, т.е. меньше 1 января 1985 года (на 2003 год). Тогда бланк запроса будет иметь вид, аналогичный показанному на рис. 30.

Рис. 30. Критерий запроса включает три условия для разных полей, объединенных оператором OR. Результирующие записи должны удовлетворять одному из трех условий

ЗАДАНИЕ 10. Построение запросов с условием отбора

  1. Сформировать запрос Запрос1 на получение списка студентов-мужчин, обучающихся на коммерческой основе. В результирующей таблице выведите только список фамилий. Рекомендация: условия для требуемых полей записывать в одной строке.

  2. Сформировать запрос Запрос2 на получение списка студентов-мужчин, дата рождения которых находится в интервале от 1.01.1983г. до 31.12.1983г. Рекомендация: условия для выбора можно задать с помощью операторов >=#1.01.83# And <= #1.01.83# или Between #1.01.83# And #31.12.83#

Построение запросов с параметром

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

Для каждого поля, которое предполагается использовать как параметр, введите в ячейку строки Условие отбора текст приглашения, заключенный в квадратные скобки. Это приглашение будет выводиться при запуске запроса. Текст подсказки должен отличаться от имени поля, но может включать его.

Например, сделаем запрос на отсрочку от армии (рис. 30) более универсальным: возраст призыва будет меняться в зависимости от времени призыва. Для этого выполните следующее задание.

ЗАДАНИЕ 11. Построение запросов с параметром

  1. Используя буфер обмена, скопировать в базу данных запрос Отсрочка от армии на 2003год. Дать ему новое имя Отсрочка от армии.

  2. Открыть новый запрос в режиме Конструктора. В ячейке Условие ввода ввести: <[Ввести дату призыва дд.мм.гг.] (рис. 31 а).

  3. Для предварительного просмотра запроса с параметрами до его сохранения нажмите кнопку на панели инструментов и введите значение параметра. Для возвращения в режим конструктора запроса нажмите кнопку на панели инструментов. При выполнении запроса программа Access открывает диалоговое окно с введенной вами в квадратных скобках подсказкой (рис. 31 б). В это окно необходимо ввести нужную величину.

  4. Активизируйте запрос несколько раз, задавая разные значения параметра. Посмотрите, как меняются результаты выполнения запроса.

  5. Скопируйте Запрос2 из ЗАДАНИЯ 10, дав ему имя Запрос3. Откройте его в режиме Конструктора.

  6. Для того чтобы вывести приглашения "Введите начальную дату:" и "Введите конечную дату:" для определения диапазона отбираемых значений, введите Between [Введите начальную дату :] And [Введите конечную дату:] в ячейку строки Условие отбора в столбце поля Dtr (Дата рожд). Поработайте с этим запросом.

а) б)

Рис. 31. а) Фрагмент бланка запроса, в котором параметром является

условие отбора для поля Dtr (Дата рожд);

б) Диалоговое окно для ввода параметра

Для того, чтобы находить в поле не конкретное значение, а только его фрагмент используют оператор Like. Например, если требуется отобрать студентов, фамилия которых начинаются на букву «А», в бланке запроса для поля ФИО можно записать условие Like "А*".

  1. Для таблицы Ведомость создать запрос, который выводил результаты экзаменов за I семестр для любой группы.

  2. Для этого создайте новый запрос в режиме конструктора на основе запроса Общая ведомость. Добавьте поля ФИО, Nst, 1_p, 1_e1,1_e2, Ngr. В последнем поле Ngr задайте условие отбора Like [Ввести номер группы]. Дайте ему название Ведомость группы за I семестр.

  3. Проверьте, как работает данный запрос. Обратите внимание, что при вводе в поле параметра группы можно не соблюдать регистр букв и не надо набирать дефис. Например, чтобы получить ведомость группы А‑2, надо ввести а2.