- •Примечания
- •Примечания
- •Свойства, определяющие обработку пустых полей
- •Отличие пустых (Null) значений и пустых строк
- •Разрешение на существование пустых (Null) значения в поле
- •Запрет на пустые (Null) значения и пустые строки
- •Разрешение на ввод в поле только пустых строк или каких-либо значений
- •Поиск пустых строк и пустых (Null) значений
Лекция 55 по МА Фильтры
Запросы на выборку и фильтры являются основным инструментом извлечения данных из таблиц БД. По своему назначению фильтр и запрос на выборку (далее просто запрос) достаточно близки – оба предназначены для сортировки и отбора данных.
Фильтр отличается от запроса тем, что не сохраняется в БД и неотделим от объекта, для которого создан. Таким образом, запрос можно считать фильтром, который специально сохраняется отдельно от таблицы для дальнейшего использования в других таблицах и в запросах. Вторым важным отличием запроса от фильтра является возможность строить на его основе отчеты и формы, а также выполнять достаточно сложные вычисления.
Особое положение занимает запрос на изменение, который, в отличие от фильтра и запроса на выборку, предназначен для изменения данных, а не для их сортировки и отбора.
Сортировка. Сортировка – это перестановка данных по возрастанию или по убыванию. Сортировка чисел может быть по значению или по алфавиту. Сортировка бывает простая и сложная. Простая сортировка может быть осуществлена по одному или нескольким полям. При сортировке по нескольким полям главное поле всегда расположено левее остальных, за ним следующее по значимости и т.д.
Сходство и различие между запросами на выборку и фильтрами
Основное сходство между запросами на выборку и фильтрами заключается в том, что в них проводится извлечение подмножества записей из базовой таблицы или запроса. Выбор применения фильтра или запроса зависит от того, как предполагается использовать отобранные записи.
Фильтр обычно используют при работе в режиме формы или в режиме таблицы для просмотра или изменения подмножества записей. Запрос следует использовать для выполнения следующих действий:
· Просмотр подмножества записей без предварительного открытия конкретной таблицы или формы.
· Выбор таблиц, содержащих записи, с возможностью последующего добавления других таблиц.
· Отбор полей, выводящихся на экран при отображении результирующего набора записей.
· Выполнение вычислений над значениями полей.
Примечание. При создании запроса иногда удобно создать обычный фильтр, фильтр по выделенному или ввести данные в поле «Фильтр для» с последующим сохранением фильтра как запроса. Это позволяет обойтись без работы с бланком запроса (кроме ситуаций, когда в запрос необходимо внести дополнительные изменения). Даже в этом случае при открытии запроса в режиме конструктора Microsoft Access заполняет бланк с помощью данных, полученных из фильтра. Такой бланк может стать основой для дальнейшей работы с запросом.
В следующей таблице сравниваются характеристики запросов и фильтров.
Характеристики |
Фильтры |
Запросы |
Позволяет добавить еще несколько таблиц, записи которых включаются в возвращаемый набор записей. |
Нет |
Да |
Позволяет указать поля, которые должны отображаться в результирующем наборе записей. |
Нет |
Да |
Выводится как отдельный объект в окне базы данных. |
Нет |
Да |
Используется только с закрытой таблицей, запросом или формой |
Нет |
Да |
Создает результирующие наборы записей, которые используются как источник данных для формы или отчета. |
Да |
Да |
Позволяет вычислять суммы, средние значения, подсчитывать количество записей и находить другие итоговые значения. |
Нет |
Да |
Позволяет сортировать записи. |
Да |
Да |
Позволяет вносить изменения в данные, если эта операция не запрещена за счет других условий. |
Да |
Да (в зависимости от типа запроса). Громоздкие изменения обычно выполняются с помощью запроса на обновление записей.. |
Создание фильтра быстрое (контекстное меню)
Используется для быстрого отбора нужных записей.
В окне БД выберите таблицу или запрос и нажмите кнопку Открыть (Open) на панели инструментов окна БД.
Выберите поле записи, к которому нужно применить фильтр, и щелкните по нему правой клавишей мыши.
В контекстном меню выберите команду Фильтр для (Filter for) и в текстовое поле этой команды введите условие отбора(Дата и время, Другое поле, Пустое поле, Текст, Число).
Нажмите клавишу Enter.
Совет: Посредством контекстного меню фильтр можно последовательно применить к разным полям.
Совет: Чтобы отменить фильтрацию, щелкните правой кнопкой мыши по полю и в контекстном меню выберите команду Удалить фильтр (Remove Filter/Sort) или отожмите кнопку Удалить фильтр (Remove Filter) на панели инструментов Access, которая после этого снова превратится в кнопку Применение фильтра (Apply Filter).
Сравнение разных фильтров
Выполняемые действия |
Фильтр по выделенному |
Обычный фильтр и поле «Фильтр для» |
Расширенный фильтр |
Поиск записей, удовлетворяющих нескольким условиям. |
Да (условия отбора следует задавать поочередно). |
Да (условия отбора можно задать одновременно). |
Да (условия отбора можно задать одновременно). |
Поиск записей, удовлетворяющих хотя бы одному из условий. |
Нет |
Да |
Да |
Указание условия отбора с помощью выражения. |
Нет |
Да |
Да |
Сортировка записей по возрастанию или по убыванию. |
Нет (однако, после применения фильтра |
|
|
допускается сортировка записей с помощью кнопок Сортировка по возрастанию или Сортировка по убыванию на панели инструментов). |
Нет (однако, после применения фильтра |
|
|
допускается сортировка записей с помощью кнопок Сортировка по возрастанию или Сортировка по убыванию на панели инструментов). |
Да (допускается сортировка части полей по возрастанию, а других полей по убыванию). |
|
|
Создание фильтра в таблице, запросе или форме
Существуют четыре способа, используемые для отбора записей с помощью фильтров: фильтр по выделенному фрагменту, обычный фильтр, поле Фильтр для и расширенный фильтр.
Фильтр по выделенному фрагменту, обычный фильтр и поле Фильтр для являются самыми простыми способами отбора записей. Если можно легко найти и выбрать в форме, подчиненной форме или в объекте в режиме таблицы значение, которое должны содержать отбираемые записи, следует использовать фильтр по выделенному фрагменту. Обычный фильтр используется для выбора искомых значений из списка без просмотра всех записей в таблице или форме, или при указании нескольких условий отбора одновременно. Поле Фильтр для используется, если фокус ввода находится в поле формы или таблицы и нужно ввести конкретное искомое значение или выражение, результат которого будет использоваться в качестве условия отбора. Для создания сложных фильтров, следует использовать окно расширенного фильтра.
Примечание. В отчетах нельзя создавать фильтр с помощью вышеперечисленных методов. Однако отчет (как и форма) может наследовать фильтр.
Влияние фильтра и порядка сортировки таблицы или запроса на новые формы или отчеты
При создании формы или отчета на базе таблицы или запроса с обозначенным фильтром или порядком сортировки, Microsoft Access включает этот фильтр и порядок сортировки в форму или отчет. Порядок сортировки применяется автоматически. Возможность автоматического применения фильтра зависит от способа создания формы или отчета.
В случае создания формы или отчета непосредственно на основе отобранных данных, выведенных на экран в открытой таблице или запросе, фильтр применяется автоматически при каждом просмотре отчета. Но в этом случае он применяется только при первом просмотре формы после ее создания. (При следующем открытии формы пользователь должен применять фильтр самостоятельно).
В случае создания формы или отчета на основе закрытой таблицы или запроса фильтр не будет автоматически применяться в новой форме или отчете. Пользователь имеет возможность самостоятельно указывать применение фильтра.
Использование фильтра по выделенному фрагменту.
Отбор записей с помощью значений, выбираемых в форме, подчиненной форме или в объекте в режиме таблицы
1 В поле формы, подчиненной формы или объекта в режиме таблицы найдите значение, которое должны содержать записи, включаемые в результирующий набор при применении фильтра.
2 Выберите это значение и нажмите кнопку Фильтр по выделенному на панели инструментов. Способ выбора значения определяет, какие записи будут отобраны фильтром.
Влияние способа выбора значений для фильтра на результирующий набор записей
В поле можно выбрать все значение или его часть. Способ выбора значения определяет, какие записи будет возвращать фильтр.
Выбор |
Поиск записей |
Пример |
Выделяется все содержимое поля (или курсор устанавливается в поле без выделения значения). |
Все содержимое данного поля должно совпадать с выбранным значению. |
В поле «Город» выбрано значение «Берлин». Фильтр возвращает все записи, у которых в поле города содержится значение «Берлин». |
Часть значения, начиная с первого символа в поле. |
Значение данного поля должно начинаться с выбранных символов. |
В поле «Название», содержащем значение «Прима», выделены символы «При». Фильтр отбирает все записи, содержащие в поле «Название» значения, которые начинаются с «При» (например, «Привет» и «Прибой»). |
Часть значения, начиная не с первого символа в поле. |
Все значение данного поля или его часть содержат выбранные символы. |
В поле «Название», содержащем значение «Прима», выделены символы «рим». Фильтр отбираются все записи, содержащие «рим» в любом месте поля «Название» (например, «Рим», «Римма» и «Буриме»). |
Повторяйте шаг 2, пока не будут заданы все условия отбора записей.
Примечания
· Фильтры сохраняются автоматически при сохранении таблицы или формы. Таким образом, при повторном открытии таблицы или формы можно снова применить сохраненный фильтр.
· При сохранении запроса фильтр сохраняется автоматически, но условие фильтра не добавляется к содержимому бланка запроса. При повторном открытии запроса можно снова применить сохраненный фильтр.
· Фильтр позволяет отбирать записи, не содержащие выбранного значения. Выберите значение, нажмите правую кнопку мыши и выберите команду Исключить выделенное.
Фильтр будет возвращать записи, содержащие в полях все значения, указанные на вкладке Найти, или все значения, указанные на первой вкладке Или, или все значения, указанные на второй вкладке Или и т.д.
Примечания
· Фильтры сохраняются автоматически при сохранении таблицы или формы. Таким образом, при повторном открытии таблицы или формы можно снова применить сохраненный фильтр.
· При сохранении запроса фильтр сохраняется автоматически, но условие фильтра не добавляется к содержимому бланка запроса. При повторном открытии запроса можно снова применить сохраненный фильтр.
Примеры выражений условий отбора для запросов или фильтров
Выражение условия отбора может быть использовано в ячейке Условие отбора либо в окне расширенного фильтра, либо в режиме конструктора запроса.
Примечание. Можно также использовать специальные выражения условий отбора в поле в окне обычного фильтра, либо использовать выражения из списка, представленного в полях.
Примеры выражений, использующие в качестве условий отбора текстовые значения
Поле |
Выражение |
Описание |
ПунктНазначения |
"Киев" |
Отображает заказы на доставку товаров в Киев. |
ПунктНазначения |
"Киев" Or "Минск" |
Использует оператор Or для отображения заказов на доставку товаров в Киев или Минск. |
ДатаОтгрузки |
Between #05.01.95# And #10.01.95# |
Использует оператор Between...And для отображения заказов на отгрузку товаров не ранее 5-янв-95 и не позднее 10-янв-95. |
ДатаОтгрузки |
#02.02.95# |
Отображает заказы на отгрузку товаров 2-фев-95. |
СтранаДоставки |
In("Канада", "Великобритания") |
Использует оператор In для отображения заказов на доставку товаров в Канаду или Великобританию. |
СтранаДоставки |
Not "США" |
Использует оператор Not для отображения заказов на доставку товаров во все страны, за исключением США. |
ИмяПолучателя |
Like "С*" |
Заказы на доставку товаров клиентам, имена которых начинаются с буквы С. |
Название |
>="Н" |
Отображает заказы на доставку товаров в фирмы, названия которых начинаются с букв, находящихся в диапазоне от Н до Я. |
КодЗаказа |
Right([КодЗаказа], 2) |
|
="99" |
Использует функцию Right для отображения заказов, код которых заканчивается на 99. |
|
Название |
Len([Название]) |
|
>Val(30) |
Использует функции Len и Val для отображения заказов для фирм, названия которых состоят из более чем 30 символов. |
|
Примеры выражений, вычисляющих или управляющих датами и использующих полученные результаты в качестве условия отбора
Поле |
Выражение |
Описание |
ДатаИсполнения |
Between Date( ) And DateAdd("m", 3, Date( )) |
Использует оператор Between...And и функции DateAdd и Date для отображения заказов, требующих исполнения в течение трех месяцев, начиная с сегодняшней даты включительно. |
ДатаЗаказа |
< Date( )- 30 |
Использует функцию Date для отображения заказов, сделанных ранее, чем 30 дней назад. |
ДатаЗаказа |
Year([ДатаЗаказа])=1996 |
Использует функцию Year для отображения заказов, сделанных в 1996 году. |
ДатаЗаказа |
DatePart("q", [ДатаЗаказа])=4 |
Использует функцию DatePart для отображения заказов на четвертый квартал. |
ДатаЗаказа |
DateSerial(Year |
|
([ДатаЗаказа]), |
|
|
Month([ДатаЗаказа])+1, 1)-1 |
Использует функции DateSerial, Year и Month для отображения заказов на последний день каждого месяца. |
|
ДатаЗаказа |
Year([ДатаЗаказа])= |
|
Year(Now()) And Month([ДатаЗаказа])= |
|
|
Month(Now()) |
Использует функции Year и Month, а также оператор And для отображения заказов текущего года и месяца. |
|
Примеры выражений, использующих пустые значения полей (пустые значения или пустые строки) в качестве условия отбора