4. Исследование режима фильтрации данных
Цель работы – выбор из БД группы данных
Общие сведения
Если таблицы БД имеют значительный размер (как например, таблица, полученная в результате выполнения предыдущей работы), то объем информации, предъявляемый пользователю, оказывается очень большим и в нем трудно ориентироваться. Например, обнаружить запись, которую необходимо отредактировать, будет очень непросто. Для облегчения поиска информации используется режим фильтрации.
Фильтр - это механизм, позволяющий отображать только записи, удовлетворяющие определенному условию.
После установки фильтра создается полное впечатление, что в БД остались только записи, удовлетворяющие заданному условию.
Существует насколько способов фильтрации.
Фильтр по выделенному. Для его включения следует в открытой таблице выделить образец данных для фильтрации. Например, можно выделить район, где поживает один сотрудник. Нажав инструментальную кнопку Фильтр по выделенному, Вы увидите список только тех сотрудников, которые проживают в этом же районе.
Если выделить смежные элементы данных, например, район и должность, и включить фильтр по выделенному, то будут показаны только живущие в выделенном районе и имеющие выделенную должность.
Если выделить два элемента данных с различными районами, то будут выбраны записи, имеющие любой из выбранных районов.
Наконец, если выделить блок из нескольких строк и нескольких столбцов, то каждая строка этого блока будет представлять собой образец для фильтра. Например, если в первой строке блока выделена фамилия Иванов и должность Директор, а во второй – фамилия Петров и должность Бухгалтер, то фильтр выведет только директоров Ивановых и бухгалтеров Петровых, но не директоров Петровых и не бухгалтеров Ивановых.
Порядок следования полей. Если окажется, что требуется выделить для фильтра значения несмежных полей, то их порядок можно поменять. Это можно сделать как в Конструкторе, переставив строки описания структуры, так и в открытой таблице, переставив столбцы. Эти два механизма независимы, то есть если поменять порядок полей в открытой таблице, порядок полей в структуре таблицы не изменится.
Изменение порядка полей в открытой таблице используется как для фильтрации, так и для сортировки данных. Удобно оно и для отображения данных в нужном порядке.
Расширенный фильтр. Более сложный фильтр можно создать при помощи Конструктора фильтров. Он вызывается через меню à Записи à Фильтр à Расширенный фильтр.
Открывается окно формирования фильтра. Его верхняя часть содержит графическое изображение таблицы, для которой устанавливается фильтр. Нижняя часть имеет вид таблицы и является по сути «бланком заказа» на отбор нужных Вам данных.
В каждом столбце таблицы-«бланка» задается одно поле. Верхняя строка таблицы содержит имена полей, которые участвуют в процессе фильтрации.
Следующая строка задает порядок сортировки. Сортировка будет изучаться в следующей работе.
Третья строка называется Условие отбора. За ней следует строка или. В строках, начиная с Условия отбора и ниже, записываются условия отбора данных. Например, для вывода только директоров и бухгалтеров требуется задать условия отбора в виде рис.1.2.
Поле: | Должность |
Сортировка: | |
Условие отбора: | Директор |
или: | Бухгалтер |
Рис. 1.2. Условия отбора в расширенном фильтре
Или здесь является логической операцией, связывающей два простых условия:
([Должность] = "Директор") Or ([Должность] = "Бухгалтер") .
В этой записи, выполненной в стандарте Access:
¨ круглые скобки задают порядок вычислений, как в обычной арифметической формуле;
¨ квадратные скобки определяют, что Должность является именем поля;
¨ кавычки обозначают текстовую константу – образец для поиска;
¨ Or – логическая операция или.
Результат этой формулы будет равен Истине (True), если выполняется хотя бы одно из простых условий в скобках. В противном случае результат имеет значение Ложь (False).
Данная формула будет вычисляться для каждой записи таблицы. Если результат истинен, то запись будет показана.
Существует еще одна логическая операция – и.
Пусть требуется вывести не просто директоров, а директоров по фамилии Иванов. Задание для поиска будет иметь вид (см. рис.1.3):
Поле: | Должность | ФИО |
Сортировка: | ||
Условие отбора: | Директор | Иванов |
Рис. 1.3. Задание логической операции «и» в расширенном фильтре
Для отбора проверяется истинность следующего выражения:
([Должность] = "Директор") And ([ФИО] = "Иванов") .
Результат будет иметь значение Истина только тогда, когда выполняются оба простых условия.
Наконец, для выбора директоров Ивановых и бухгалтеров Петровых следует задать условие как (см. рис.1.4):
Поле: | Должность | ФИО |
Сортировка: | ||
Условие отбора: | Директор | Иванов |
или: | Бухгалтер | Петров |
Рис. 1.4. Использование логических операций в расширенном фильтре
Формула для проверки условия отбора будет иметь вид
(([Должность] = "Директор") And ([ФИО] = "Иванов")) Or
(([Должность] = "Бухгалтер") And ([ФИО] = "Петров")) .
В столбцах таблицы-образца можно указывать одинаковые имена полей. Если будет возможность, Access самостоятельно упростит вид фильтра.
Например, для вывода сведений о сотрудниках, родившихся после 31 декабря 1987, но до 1 января 1989 года, то есть в 1988 году, задается фильтр рис.1.5:
Поле: | ДатаРожд | ДатаРожд |
Сортировка: | ||
Условие отбора: | >31.12.87 | <01.01.89 |
Рис. 1.5. Задание в фильтре диапазона значений дат рождения
При вводе данных текст в Условии отбора изменяется: даты заключаются в символы #. Это означает, что Access узнала во введенных символах дату и считает 31.12.87 константой типа дата/время.
Для того, чтобы посмотреть на результат, щелкните по окну фильтра правой кнопкой мыши и выберите опцию Применить фильтр.
Диапазон значений также можно задеть при помощи логической операции And (см. рис.1.6).
Поле: | ДатаРожд |
Сортировка: | |
Условие отбора: | >#31.12.87# And <#01.01.89# |
Рис. 1.6. Задание в фильтре диапазона значений с помощью логической операции
Внимание! Когда вводят условия, часто забывают о кавычках. Access пытается сама определить, что было введено: образец данных, который следует считать константой и выделять кавычками, или имя поля. К сожалению, она часто ошибается. Если появится ошибка, установите вручную:
- кавычки для текстовой константы;
- квадратные скобки для имени поля.
Замечание. У каждой таблицы имеется только один фильтр, то есть если Вы изменяете условия фильтрации, то старый фильтр не сохраняется.
Снятие фильтра. Для того, чтобы снова увидеть все записи, следует нажать кнопку Удалить фильтр или выбрать соответствующий пункт контекстного меню.
При этом условия, заданные в фильтре, сохраняются.
Задание
¨ Установите поочередно фильтры по выделенному для отбора:
1) всех работниц;
2) всех служивших в армии;
3) всех работников, проживающих в заданном районе и имеющих определенное количество детей;
4) всех однофамильцев одного из сотрудников, проживающих в том же районе;
5) всех сотрудников, имеющих заданный оклад и должность;
6) всех женщин не служивших в армии.
7) С помощью расширенного фильтра выберите записи для следующих условий (конкретные значения выбираются так, чтобы была видна работа фильтра):
8) родившиеся до заданной даты;
9) родившиеся в определенном интервале дат;
10) имеющие оклады в заданном диапазоне;
11) родившиеся до заданной даты и служившие в армии;
12) имеющие оклад в заданных пределах;
13) имеющие оклад больше заданного и количество детей больше заданного;
14) лица женского пола с зарплатой в заданных пределах и лица мужского пола с маленьким окладом.
Порядок выполнения работы
1. Фильтрация по выделенному осуществляется для смежных колонок. Поэтому вам необходимо передвинуть нужные колонки так, чтобы они оказались рядом. Данные манипуляции следует проводить в открытой таблице, а не в конструкторе таблиц.
2. Выполните требуемую по заданию фильтрацию данных при помощи расширенного фильтра.
Результат работы
¨ Проверяется умение пользоваться фильтром по выделенному и расширенным фильтром, вводить сложные условия, состоящие из двух-трех простых, а также задавать 2-3 образца для поиска, содержащие значения различных полей.


