Фильтр в запросе access в конструкторе

Обновлено: 28.04.2024

В Microsoft Access предусмотрено четыре способа отбора записей с помощью фильтров: фильтр по выделенному фрагменту, обычный фильтр, поле Фильтр для (Filter For) и расширенный фильтр.

Фильтр по выделенному фрагменту, обычный фильтр и поле Фильтр для (Filter For) являются очень простыми способами отбора записей, причем самым простым является фильтр по выделенному фрагменту — он позволяет найти все записи, содержащие определенное значение в выбранном поле. Обычный фильтр используется для отбора записей по значениям нескольких полей. Поле Фильтр для (Filter For) используется, если фокус ввода находится в поле таблицы и нужно ввести конкретное искомое значение или выражение, результат которого будет применяться в качестве условия отбора. Для создания сложных фильтров следует использовать окно расширенного фильтра.

Набор записей, которые были отобраны в процессе фильтрации, называется результирующим набором.

Чтобы использовать фильтр по выделенному фрагменту, необходимо:

  1. В поле объекта в режиме Таблицы найти значение, которое должны содержать записи, включаемые в результирующий набор при применении фильтра.
  2. Выделить это значение и нажать кнопку Фильтр по выделенному (Filter by Selection) на панели инструментов Режим таблицы (Table Datasheet).

Фильтры сохраняются автоматически при сохранении таблицы или формы. Таким образом, при повторном открытии таблицы или формы можно снова применить сохраненный фильтр.

Фильтр позволяет отбирать записи, не содержащие выбранного значения. Для этого необходимо выбрать значение, нажать правую кнопку мыши и выполнить команду Исключить выделенное (Filter Excluding Selection).

На рис. 2.57 показан результирующий набор, полученный применением фильтра по выделенному к таблице "Заказы" (Orders) демонстрационной базы данных (Northwind). Чтобы получить такой результат:

Чтобы отменить фильтр, необходимо нажать на кнопку Удалить фильтр (Remove Filter) на панели инструментов Режим таблицы (Table Datasheet) или воспользоваться одноименной командой контекстного меню.

Access запоминает последний применяемый фильтр, поэтому если теперь нажать на кнопку Применение фильтра (Apply Filter) на панели инструментов, вновь будут отобраны те же записи.

Кнопки Применение фильтра (Apply Filter) и Удалить фильтр (Remove Filter) являются по сути одной кнопкой, состояние (нажата, отжата) и подпись которой меняются в зависимости от того, установлен или нет фильтр для таблицы. Еще одним признаком, по которому можно узнать, что в таблице отображаются отфильтрованные записи, является слово ФЛТР (FLTR) в строке состояния окна приложения.

Для того чтобы установить фильтр по выделенному фрагменту, можно воспользоваться также командой контекстного меню Фильтр по выделенному (Filter by Selection) или выбрать из меню Записи (Records) команду Фильтр, Фильтр по выделенному (Filter, Filter by Selection).

Похожей возможностью фильтрации записей обладает поле Фильтр для (Filter For). Его можно использовать в том случае, когда не удается быстро найти образец отбора в столбце таблицы.

Чтобы использовать возможности поля Фильтр для (Filter For), необходимо:

  1. Открыть таблицу в режиме Таблицы.
  2. Щелкнуть правой кнопкой мыши на поле, для которого нужно указать условие отбора, а затем ввести значение условия отбора в поле Фильтр для (Filter For) в контекстном меню (рис. 2.58).

Чтобы применить фильтр и закрыть контекстное меню, нужно нажать клавишу , а чтобы применить фильтр и оставить контекстное меню открытым — клавишу . При этом можно вводить в поле Фильтр для (Filter For) новые значения и по нажатии клавиши обновлять содержимое выборки.

В поле Фильтр для (Filter For) можно указывать не только конкретные значения, но и выражения, требующие вычислений.

Чтобы применить обычный фильтр, необходимо:

  1. Открыть таблицу в режиме Таблицы (например, откройте таблицу "Заказы" (Orders)).
  2. Нажать кнопку Изменить фильтр (Filter by Form) на панели инструментов Режим таблицы (Table Datasheet). Появится форма фильтр (Filter by form) — специальное окно для изменения фильтра (рис. 2.59). Форма содержит линейку полей таблицы. В любое из этих полей можно ввести или выбрать из списка значение, которое и будет являться условием отбора. Если условия ввести в несколько полей, они будут объединяться с помощью логического оператора И. Для того чтобы объединить условия по ИЛИ, нужно раскрыть другую вкладку формы, щелкнув по ярлычку Или в нижней части формы.

При вводе условий отбора в поля формы можно использовать любые выражения, которые возможны в Access (см. разд. "Выражения в Access"гл. 4).

Условия отбора записей, которые вводятся в поля формы фильтр (Filter by Form), можно сохранить в базе данных в виде запроса. Для этого необходимо при открытой форме фильтр (Filter by Form) нажать кнопку Сохранить как запрос (Save As Query) на

панели инструментов. Затем в диалоговом окне Сохранение в виде запроса (Save As Query) ввести имя запроса и нажать кнопку ОК. Когда потребуется повторить установку такого фильтра, нужно опять же при открытой форме фильтр (Filter by Form) нажать кнопку Загрузить из запроса (Load from Query) на панели инструментов.

Создание расширенного фильтра, как более сложного, будет рассматриваться в гл. 4.

Отобранные с помощью фильтра данные можно копировать, экспортировать и рассылать. Копирование данных из выборки осуществляется так же, как копирование данных в таблице.

Экспорт данных из выборки позволяет сохранить их в отдельном файле. Чтобы экспортировать данные, необходимо:

  1. Выбрать в меню Файл (File) команду Экспорт (Export).
  2. В окне Экспорт объекта: Таблица в (Export Table to) выбрать папку для экспорта файла.
  3. В поле Имя файла (File Name) ввести имя файла, в который осуществляется экспорт.
  4. В поле Тип файла (Save as Type) выбрать тип файла, в который осуществляется экспорт.
  5. Нажать кнопку Сохранить все (Export All).

Фильтрация — это полезный способ отображения только тех данных, которые должны отображаться в базах данных Access. С помощью фильтров можно отобразить определенные записи в форме, отчете, запросе или таблице или напечатать только определенные записи из отчета, таблицы или запроса. Применив фильтр, можно ограничить данные в представлении, не изменяя при этом оформление объекта.

В этой статье

Полезные фильтры

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

Примечание: Столбцы таблиц и элементов управления в формах и отчетах, привязанные к выражениям, не поддерживают фильтрацию.

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

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

1. Доступные фильтры зависят от типа данных в выбранном столбце.

2. Фильтр "Все даты в периоде" игнорирует день и год в значениях даты.

В этом отфильтрованом представлении вы увидите только записи, в которых месяц в поле "ДатаРождения" имеет апрель.

1. Значок фильтра в заглавной области столбца и панели навигации по записям указывает на то, что текущее представление отфильтрована по столбце BirthDate.

2. В представлении таблицы при наведении указателя мыши на заголовок столбца вы увидите текущее критерий фильтра.

Примечание: При применении фильтра к уже отфильтрованму столбце предыдущий фильтр автоматически удаляется. Хотя одновременно может действовать только один фильтр для поля, для каждого поля в представлении можно задать отдельный фильтр.

Например, чтобы увидеть имена контактных лиц, родиированных в апреле, можно отфильтровать таблицу "Контакты" по полю "СтранаРегион", а также по полю "ДатаРождения". Если фильтры применяются к нескольким полям в одном представлении, они объединяются с помощью оператора AND, например:

СтранаРегион = РФ AND ДатаРождения (месяц) = апрель

Чтобы вернуться к неотфильтрованным представлениям, удалите фильтры. При этом фильтры временно удаляются, и вы можете вернуться к первоначальному представлению.

Для переключения между отфильтрованным и неотфильтрованным представлениями в группе "Сортировка & Фильтр" на вкладке "Главная" нажмите кнопку "Переключить фильтр".

Чтобы окончательно удалить фильтр из представления: очистка фильтра. Чтобы узнать, как очистить фильтры, см. раздел "Очистка фильтра".

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

Выбор и применение типа фильтра

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

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

Выберите один из следующих типов фильтров:

Общие фильтры:фильтрация по определенным значениям или диапазону значений.

Фильтр по выбору:фильтрация всех строк таблицы, содержащих значение, которое соответствует выбранному значению в строке, путем фильтрации представления таблицы.

Фильтрация по форме:фильтрация по нескольким полям в форме или таблице либо поиск определенной записи.

Расширенный фильтр.Чтобы отфильтровать тип, в котором задаются настраиваемые условия фильтра.

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

Общие фильтры

Общие фильтры предлагаются для полей всех типов, кроме полей объектов OLE и полей, в которых отображаются вычисленные значения. Список доступных фильтров зависит от типа данных и значений выбранного поля.

Щелкните правой кнопкой мыши поле, которые нужно отфильтровать. Чтобы отфильтровать несколько столбцов или элементов управления, необходимо либо выбрать и отфильтровать каждый из них отдельно, либо использовать расширенный фильтр. Дополнительные сведения см. в разделах Фильтр по форме и Расширенные фильтры этой статьи.

Например, чтобы увидеть доступные фильтры для поля "ДатаРождения", на вкладке "Главная" в группе "Фильтр сортировки &" нажмите кнопку "Фильтр".

1. Чтобы применить фильтр по определенным значениям, используйте список с флажками. Этот список содержит все значения, которые отображаются сейчас в поле.

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

Следует отметить, что значения в поле даты определяют список фильтров для конкретного типа. Если самое недавнее значение даты попадает в последние два года, список фильтров будет более полным. Если все даты в поле оказываются более чем двухгодичной давности, список фильтров будет короче.

Примечание: Фильтры, зависящие от типа, недоступны для полей объектов OLE, вложений и логических полей. Список значений не используется для полей типа Memo или полей с форматированным текстом.

Применение общего фильтра

Откройте таблицу, запрос, форму или отчет в режиме таблицы, формы, отчета или макета.

Убедитесь, что представление еще не отфильтровано. Убедитесь, что на панели выбора записей есть значок "Без фильтра" или "Нет фильтра".

Совет: Чтобы удалить все фильтры для конкретного объекта, на вкладке "Главная" в группе "Сортировка & Фильтр" нажмите кнопку "Дополнительные" и выберите "Очистить все фильтры".

Щелкните в любом месте столбца или управления, соответствующего первому полю, которое нужно отфильтровать, и на вкладке "Главная" в группе "Фильтр & сортировки" нажмите кнопку "Фильтр".

Чтобы применить общий фильтр: выберите фильтры "Текст" (или "Число" или "Дата"), а затем щелкните нужный фильтр. Фильтры, такие как "Равно" и "Между", вы запросуют ввод необходимых значений.

Чтобы применить фильтр на основе значений полей: сделайте флажки рядом со значениями, которые не нужно фильтровать, и нажмите кнопку "ОК".

Для фильтрации по одному или нескольким значениям в длинном списке сначала необходимо сначала очистить поле (Выбрать все), а затем выбрать нужные значения.

Чтобы отфильтровать пустые значения (пустое значение означает отсутствие данных) в текстовых, числовых полях и полях даты: в списке "поле со значением", а затем в списке "Выбрать все", а затем — рядом с полем "(Пустые)".

Фильтрация по выбору

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

Например, если в поле "ДатаРождения" выбрано значение 21.02.1967, на вкладке "Главная" в группе "Фильтр сортировки &" щелкните "Выделение", чтобы отобразить фильтр по командам выбора, а затем выберите параметр фильтрации.

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

1. Фильтрация по началу значения поля.

2. . по середине значения поля.

3. . или по концу значения поля.

Примечание: Фильтрация по частично выделенному значению недоступна для многозначных полей. Команда "Выделение" недоступна для вложений.

Чтобы удалить фильтр, на вкладке "Главная" в группе "Сортировка & фильтра" нажмите кнопку "Фильтр" или кнопку "Дополнительные" и выберите "Очистить все фильтры".

Применение фильтра по выделенному фрагменту

Откройте таблицу, запрос, форму или отчет в режиме таблицы, формы, отчета или макета.

Убедитесь, что представление еще не отфильтровано. Убедитесь, что на панели выбора записей есть значок "Без фильтра" или "Нет фильтра".

Перейдите к записи, содержащей значение, которое вы хотите использовать в фильтре, и щелкните внутри столбца (в режиме таблицы) или элемента управления (в режиме формы, отчета или макета).

Фильтрация по частичному выбору; Выберите нужные символы, а затем на вкладке "Главная" в группе "Сортировка & Фильтр" нажмите кнопку "Выделение" и выберите нужный фильтр.

Фильтр по форме

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

Примечание: Используя фильтр по форме, нельзя задать значения ни для многозначных полей, ни для полей с данными типа Memo, "Гиперссылка", "Логический" или "Объект OLE", но можно задать значения для других полей в наборе записей.

Например, если вы хотите найти все записи клиентов, в которых контактное лицо имеет должность "Владелец" и находится в Москве или в Омске, откройте таблицу или форму "Клиенты", а затем на вкладке "Главная" в группе "Фильтр сортировки &" нажмите кнопку "Дополнительные", а затем выберите "Фильтр по форме".

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

Чтобы увидеть только записи, которые соответствуют входным данным: На вкладке "Главная" в группе "Фильтр & сортировки" нажмите кнопку "Фильтр".

Применение фильтра с помощью заполнения формы

Откройте таблицу или запрос в режиме таблицы или форму в режиме формы.

Убедитесь, что представление еще не отфильтровано. Убедитесь, что на панели выбора записей есть значок "Без фильтра" или "Нет фильтра".

На вкладке "Главная" в группе "Фильтр & сортировки" выберите "Дополнительные фильтры", а затем в shortcut-меню выберите пункт "Фильтр по форме".

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

Представление таблицы: Щелкните первую строку в столбце, к которому нужно отфильтровать значения, щелкните отображемую стрелку и выберите значение. Чтобы добавить дополнительные значения, просто щелкните вкладку "Или" в нижней части таблицы и выберите другое значение.

Представление формы:щелкните стрелку, которая появится в этом оке, и выберите значение, по которому нужно отфильтровать значения. Чтобы добавить дополнительные значения, щелкните вкладку "Или" в нижней части формы и выберите другое значение.

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

Чтобы указать список возможных значений для поля, используйте оператор or. Например, чтобы отфильтровать записи, содержащие значение, в поле "Город" в поле "Город" укажите "Петербург" или "Калифорний".

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

Чтобы отфильтровать записи, которые имеют пустые (отсутствующие), непустые, пустые (пустые или "") или непустые значения, введите в поле значение Is Null,Is Not Null,""или Not "".

Если вы хотите указать два альтернативных набора критериев, например, чтобы увидеть только имена контактных лиц, родимых в апреле и родиированных в РФ, вы можете сделать следующее:

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

Также обратите внимание, что каждый раз при добавлении условия поля на вкладку "Или" в Access создается еще одна вкладка "Или". Это позволяет указать несколько альтернативных условий отбора. Фильтр возвращает любую запись, которая содержит все значения, указанные на вкладке "Искать", все значения, указанные на первой вкладке "Или", или все значения, указанные на второй вкладке "Или" и так далее.

Чтобы удалить фильтр и отфильтровать все записи, снова нажмите кнопку "Фильтр".

Чтобы изменить фильтр по форме, щелкните"Дополнительные параметры", а затем еще раз щелкните "Фильтр по форме". Появится текущий набор условий фильтра.

Расширенный фильтр

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

Для использования расширенных фильтров требуются написание выражений. Выражения похожи на формулы в Excel и на условия, которые вы указываете при разработке запроса.

Одним из примеров использования расширенных фильтров является поиск имен контактов, дни рождения которых произошли в последние семь дней. После применения дополнительного фильтра можно дополнительно ограничить результаты теми, у кого есть страна или регион США.

Применение расширенного фильтра

Откройте таблицу, запрос, форму или отчет в режиме таблицы, формы, отчета или макета.

Убедитесь, что представление еще не отфильтровано. В строке переходов по записям проверьте, что значок Нет фильтра отображается затененным (недоступен). Если строка переходов по записям не отображается, нажмите кнопку Дополнительно в группе Сортировка и фильтр на вкладке Главная и затем выберите команду Очистить все фильтры (если команда Очистить все фильтры недоступна, никакие фильтры не применены).

На вкладке "Главная" в группе & фильтра сортировки нажмите кнопку "Дополнительные", а затем выберите в shortcut-меню пункт "Расширенный фильтр/сортировка".

Добавьте в сетку поля, к которым требуется применить фильтр.

В строке Условия отбора укажите условие для каждого поля. Условия применяются в виде набора, и отображаются только записи, которые соответствуют всем условиям в строке Условия отбора. Чтобы указать альтернативные условия для отдельного поля, введите первое условие в строке Условия отбора, второе условие в строке или и т. д.

Чтобы научиться задавать условия, примените к представлению общий фильтр или фильтр по выделенному, который позволяет получить желаемый результат. Затем, когда фильтр применен к представлению, отобразить вкладку объекта "Фильтр"

Специальные команды на вкладке "Фильтр документа"

На вкладке "Фильтр" документа доступны две специальные команды. Если щелкнуть правой кнопкой мыши в любом месте вкладки над сеткой конструктора, в этом меню будут доступны команды "Загрузить из запроса" и "Сохранить как запрос".

Команда Загрузить из запроса позволяет загрузить макет выбранного запроса в сетку. Это позволяет использовать условия запроса в качестве условия фильтра.

Команда Сохранить как запрос позволяет сохранить параметры фильтра в виде нового запроса.

Удаление и повторное применение фильтра

Чтобы переключиться в неотфильтрованное представление данных, удалите фильтры, щелкнув "Отфильтрованный" на панели навигации по записям, чтобы вернуться к полному представлению.

Удаляемые текущие фильтры временно удаляются из всех полей в представлении. Например, если вы сначала применяете фильтры по полям "СтранаРегион" и "ДатаРождения", а затем удаляете фильтры, то снова отображаются все записи.

Чтобы повторно применить последние фильтры, щелкните "Без фильтра" на панели навигации по записям.

Очистка фильтра

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

Чтобы очистить один фильтр из одного поля, щелкните правой кнопкой мыши отфильтрованный столбец или поле управления и выберите "Очистить фильтр из имени поля".

Чтобы очистить все фильтры из всех полей, на вкладке "Главная" в группе "Фильтр сортировки &" нажмите кнопку "Дополнительные", а затем в ярлыке выберите пункт "Очистить все фильтры".

Сохранение фильтра

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

Чтобы текущие фильтры автоматически применялись при следующем открытие таблицы, запроса, формы или отчета, на окне свойств объекта установите для свойства FilterOnLoad объекта (FilterOnLoad)да. Свойство FilterOnLoad применяется при следующем открытие объекта. При изменении этого параметра необходимо закрыть объект и открыть его повторно, чтобы применить новый параметр.

Примечание: Параметр свойства FilterOnLoad применяется только при загрузке объекта. Если задать его для объекта в конструкторе и затем переключиться в другое представление, новое значение применено не будет. Чтобы изменения в свойстве FilterOnLoad вступили в силу, необходимо закрыть и снова открыть объект.

Связь установлена так, чтобы показывались все элементы таблицы «приборы» и если прописан филиал расположения прибора то эти данные берутся и второй таблицы «филиал расположения прибора» и выводятся в соответствующие поля

Результат выполнения запроса:

Результат выводится в подчиненную форму , одной из главной формы имеющие множество фильтров для отсеивания ненужных данных.


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

Что я делал сам:

Я прописывал в условие запроса значение поля со списком, но у меня возникала проблема
Что при пустом значении этого поля ничего не выводилось, если заполнено то запрос с условием фильтра выполнялся нормально. Вот пример:

Условие в запросе


Результат выполнения, когда поле не заполнено


Результат выполнения, когда поле заполнено.


Нужно сделать, чтобы при пустом значении фильтра «филиал» показывались все данные, которые у нас есть.

Как применить фильтр к отчету на основе фильтра запроса
Источник данных для Отчета - Запрос. Как применить фильтр к отчету, если пользователь отфильтровал.


Нулевой (пустой) результат запроса (фильтра) - как предупредить ситуацию?
Вот какой "некрасивый результат" моего фильтра, то есть условию фильтра соответствует 0 (нуль).


Создание запроса на обновление на основе запроса на вычисление
Помогите пожалуйста, имеется запрос на вычисление, который показывает средний балл учащихся по.

Создание фильтра на основе двух полей в запросе
Помогите создать запрос в котором будет выводится последняя запись по дате. Есть массив данных в.



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

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

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

Самый распространенный вид запросов — запрос на выборку. Он предназначен для отбора данных из источника в соответствии с некоторым условием. Условие запроса — это выражение, которое СУБД сравнивает со значениями в полях запроса, чтобы определить, следует ли включать в результат записи, содержащие то или иное значение.

Запрос на выборку позволяет:

1. Просматривать значения только из полей, которые вас интересуют.
2. Просматривать записи, которые отвечают указанным вами условиям.
3. Использовать выражения в качестве полей.

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

Основные режимы работы с запросами в Access:

1. Режим таблицы. Отображает информацию запроса на выборку в режиме таблицы.

2. Конструктор. В этом режиме определяется структура запроса и условия выбора данных (см. Приложение к главе 1).

Создать запрос можно с помощью Мастера запросов либо в Конструкторе (пример 5.2).

Мастер запросов позволяет автоматически создавать запросы на выборку. Однако при использовании мастера не всегда можно контролировать процесс создания запроса, но таким способом запрос создается быстрее. Необходимо просто выполнить последовательность действий, предлагаемых мастером на каждом этапе (пример 5.3).

Основные этапы создания запроса на выборку:

1. Выбор инструмента создания запроса.
2. Определение вида запроса.
3. Выбор источника(ов) данных.
4. Добавление из источника(ов) данных полей, которые должен содержать запрос.
5. Определение условий, которые формируют набор записей в запросе.
6. Добавление группировки, сортировки и вычислений (может отсутствовать).

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

Примеры записи условий в запросах:

Действие в запросе

Поля с числовым типом данных

Выбираются записи, у которых значение в этом поле больше 0 и меньше 8.

Выбираются записи, у которых значение в этом поле не равно 0.

Поля с текстовым типом данных

Если значение в поле записи равно Орша, то запись включается в результат запроса.

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

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

Если требуется использование нескольких условий для разных полей, необходимо учитывать, что между условиями, записанными в одной строке, выполняется логическая операция And , а между условиями, записанными в разных строках, выполняется логическая операция Or .

В режиме конструктора процесс создания запроса находится под вашим контролем, однако здесь есть вероятность допустить ошибку и необходимо больше времени, чем в мастере (пример 5.4).

После создания запроса на выборку его необходимо запустить, чтобы посмотреть результаты, т. е. открыть в режиме таблицы. Сохранив запрос, его можно использовать в качестве источника данных для формы, отчета или другого запроса.

Все запросы, которые рассмотрены в примерах 5.3 и 5.4 , содержат конкретные значения названий, имен, времени и т. д. Если требуется повторить такой запрос с другими значениями в условиях отбора, его нужно будет открыть в конструкторе, изменить условие и выполнить. Чтобы не делать многократно этих операций, можно создать запрос с параметрами. При выполнении такого запроса выдается диалоговое окно Введите значение параметра, в котором пользователь может ввести конкретное значение, а затем получить нужный результат. Параметр запроса определяется в строке Условие отбора конструктора для столбца, содержащего запрашиваемые значения. Параметром является слово или фраза, заключенные в квадратные скобки. Параметр будет выдаваться в виде приглашения в диалоговом окне при выполнении запроса (пример 5.5).

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

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

Наряду с запросами на выборку часто применяются запросы на действие. С помощью таких запросов можно обновлять значения полей записей, добавлять новые или удалять уже существующие записи. В СУБД Access такие запросы можно создать в режиме конструктора, воспользовавшись инструментами группы Тип запроса:


Пример 5.1. Режимы работы с запросами.


Режим SQL позволяет создавать и просматривать запросы с помощью инструкций языка SQL.

SQL (англ. structured query language — язык структурированных запросов). Применяется для создания, редактирования и управления данными в реляционной базе данных.

Пример 5.2. Группа инструментов Запросы вкладки Создание.


Пример 5.3. Создание запроса на выборку с помощью Мастера запросов.


1. Выбрать инструмент .

2. Выбрать вид запроса.


3. Выбрать источник данных.


4. Задать поле, содержащее повторяющееся значение.


5. Выбрать поля для отображения вместе с повторяющимися значениями.


6. Просмотреть и/или сохранить запрос.


Пример 5.4. Создание простых запросов на выборку с помощью Конструктора запросов.

1. Выбрать инструмент


2. Выбрать источник данных.


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


4. Записать условие формирования набора записей в запросе.

4.1. Выбор по полю с текстовым типом данных.





4.2. Выбор по полю с числовым типом данных.



4.3. Использование составного условия.





5. Сохранить запросы.

Пример 5.5. Создание запроса с параметрами.

1. Открыть один из запросов, созданных в примере 5.4 в конструкторе.

2. Изменить условия отбора на:


3. Сохранить с новым именем и открыть в режиме таблицы.

4. В диалоговом окне набрать одно из названий кинотеатра.


5. Просмотреть запрос.


Пример 5.6. Создание итогового запроса.

Создать итоговый запрос, определяющий, сколько мальчиков и сколько девочек посещают факультатив по математике.

1. Источник данных — таблица «Учащиеся».


2. Создать запрос с помощью конструктора (добавить в запрос только поле «Пол»).



3. Сгруппировать данные по полю «Пол» (нажать кнопку в группе Показать или скрыть).


4. Добавить вычисляемое поле (в строке нового поля Групповая операция в списке выбрать функцию Count).

Еще одним способом создания запроса является сохранение фильтра в виде запроса. Выше мы говорили, что фильтр используется при просмотре таблицы для отбора нужных записей. Если вы создали достаточно сложный фильтр в- окне Фильтр (Filter by Form) и знаете, что его придется использовать и в дальнейшем, можно сохранить его в базе данных в виде запроса. Для этого достаточно нажать кнопку Сохранить как запрос (Save as query) на панели инструментов при открытом окне Фильтр (Filter by Form).

Рис. 4.34. Сохранение фильтра в виде запроса

Сохраненный фильтр может быть легко использован в дальнейшем, приием двумя способами.

  • Можно, снова открыв таблицу "Клиенты" (Customers), установить сохраненный фильтр. Для этого нужно сначала открыть окно определения фильтра, нажав кнопку Изменить фильтр (Filter by form). Затем нажать кнопку Загрузить из запроса (Load from Query) на панели инструментов или выполнить команду Файл, Загрузить из запроса (File, Load from Query). При этом появится диалоговое окно Применяемый фильтр (Applicable Filter) (рис. 4.35), в котором требуется выделить в списке необходимый фильтр и нажать кнопку ОК или просто дважды щелкнуть левой кнопкой мыши по названию фильтра. Чтобы применить фильтр, нужно нажать кнопку Применение фильтра (Apply filter) на панели инструментов.

Рис. 4.35. Диалоговое окно Применяемый фильтр

Обратите внимание, что в списке фильтров не присутствуют другие запросы, а присутствует только фильтр, сохраненный как запрос.

  • Выполнить запрос "Менеджеры по продажам". Для этого нужно раскрыть список запросов в окне базы данных, найти запрос "Менеджеры по продажам" и открыть его в режиме Таблицы, нажав кнопку Открыть (Open). Вы получите тот же результат, что и в первом случае, когда применяется фильтр к открытой таблице. Когда запрос открыт в режиме Таблицы или применен фильтр к таблице, нажмите кнопку Вид, Конструктор (View, Design view) на панели инструментов. Появится окно Конструктора запроса, в котором отображается запрос, соответствующий фильтру (рис. 4.36).

Обратите внимание, что хотя в режиме Таблицы запрос отображал все столбцы исходной таблицы, в бланке запроса указан только один столбец "Должность" (ContactTitle), который содержит условие отбора, и тот не включен в результат запроса. Чтобы понять, почему так происходит, откройте запрос в режиме SQL. Для этого нужно нажать кнопку Вид, Режим SQL (View, SQL View). Появится диалоговое окно, содержащее инструкцию языка SQL, которая и обрабатывается при выполнении запроса (рис. 4.37). Эта инструкция имеет вид:

Значок * означает, что выбираются все поля из таблицы "Клиенты".

Рис. 4.36. Запрос "Менеджеры по продажам" в режиме Конструктора

Рис. 4.37. Запрос "Менеджеры по продажам" в режиме SQL

В виде запроса можно также сохранить так называемый расширенный фильтр. Расширенный фильтр используется в том случае, если требуется задать сложные критерии отбора и сортировки записей. Чтобы создать расширенный фильтр для открытой таблицы, необходимо выполнить команду Записи, Фильтр, Расширенный фильтр (Records, Filter, Advanced Filter/Sort). При этом появляется окно расширенного фильтра, которое очень напоминает окно Конструктора запроса. На рис. 4.38 представлено окно расширенного фильтра для таблицы "Заказы" (Orders). Чтобы создать такой фильтр, мы выполнили следующие действия:

Рис. 4.38. Окно расширенного фильтра

Окно расширенного фильтра действительно очень похоже на окно Конструктора запросов, однако панель инструментов очень сильно отличается от панели инструментов Конструктора запросов. Например, нельзя добавить еще одну таблицу (расширенный фильтр строится только для одной таблицы — в данном примере вторая таблица отображает поле подстановки) или выполнить группировку записей. На панели инструментов есть только две важные кнопки: Применение фильтра (Apply filter) и Сохранить как запрос (Save as query). В бланке фильтра отсутствует строка, содержащая флажки включения поля в запрос. Это означает, что фильтр не влияет на состав столбцов в результирующей таблице — всегда отображаются все столбцы, фильтруются только записи. Однако критерии отбора записей могут быть установлены сколь угодно сложные. Задаются они по тем же правилам, что и в запросах.

Читайте также: