Применение приема запроса по форме (QBF) в Microsoft Access

Код статьи: 304428 - Список продуктов, к которым относится данная статья.
Версия данной статьи для Microsoft Access 2000: 209645(Эта ссылка может указывать на содержимое полностью или частично на английском языке).
Версия данной статьи для Microsoft Access 97 и более ранних версий Microsoft Access: 95931(Эта ссылка может указывать на содержимое полностью или частично на английском языке).

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

Данная статья применима только к базам данных Microsoft Access (.accdb and .mdb).
Развернуть все | Свернуть все

На этой странице

Аннотация

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

Дополнительная информация

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

Запрос по форме может содержать только те поля, которые есть в таблице, для которой этот запрос создается. Для таблицы, в которой есть поля «Имя», «Адрес», «Город», «Область» и «Индекс», можно создать запрос по форме, в котором есть точно такие же поля. Для выбора записей можно ввести любое сочетание условий поиска. Можно определить только город, или город и область, или только индекс, или любое другое сочетание. Поля, оставляемые пустыми, игнорируются. После нажатия кнопки запуска на форме Access выполняет запрос, использующй условия поиска из этой формы.

Чтобы воспользоваться приемом QBF, выполните следующие действия:
  1. Откройте учебную базу данных Northwind.mdb.
  2. Создайте новую форму, не основанную на таблице или запросе, и сохраните ее как QBF_Form.
  3. Создайте в этой форме два текстовых поля и одну кнопку команды со следующими характеристиками. Затем сохраните форму:
       Текстовое поле 1
       ------------------
       Имя: WhatCustomer
    
       Текстовое поле 2
       ------------------
       Имя: WhatEmployee
    
       Командная кнопка 1:
       ------------------
       Надпись: Поиск
       OnClick: QBF_Macro
  4. Создайте новый макрос и сохраните его как QBF_Macro:
       Действие: OpenQuery
       Имя запроса: QBF_Query
       Представление: Datasheet
       Режим данных: Edit
  5. Создайте новый запрос, основывающийся на таблице Orders, и сохраните его как QBF_Query:
       Поле: CustomerID
       Упорядочение: По возрастанию
       Условия: Forms![QBF_Form]![WhatCustomer] Or Forms![QBF_Form]![WhatCustomer] Is Null
    
       Поле: EmployeeID
       Упорядочение: По возрастанию
       Условия: Forms![QBF_Form]![WhatEmployee] Or Forms![QBF_Form]![WhatEmployee] Is Null
    
       ПРИМЕЧАНИЕ: После выбора условия удостоверьтесь, что
       все условия введены в одно поле Условия; 
       условия не разделены помещением подраздела «Или» 
       в отдельную строку.  
    
       Поле: OrderID
    
       Поле: OrderDate
  6. Откройте форму QBF_Form в режиме просмотра. Введите следующие сочетания условий. Нажимайте кнопку Поиск после каждого сочетания условий:
       Customer ID   Employee ID  Result
       -------------------------------------------------------
       <blank>       <blank>      All 830 orders
    
       AROUT         <blank>      13 orders
    
       AROUT         4            4 AROUT orders for employee 4
    
       <blank>       4            156 orders for employee 4
После просмотра результатов каждого запроса закройте окно «Таблица» и начинайте следующий поиск. После каждого нажатия кнопки Поиск параметры фильтра запроса по форме осуществляют фильтрацию данных на основании условий поиска в форме запроса.

Примечания к параметрическим условиям запроса по форме

В примере запроса по форме используются следующие условия поиска
Forms!FormName!ControlName Or Forms!FormName!ControlName Is Null
для фильтрации данных. Эти условия возвращают все подходящие записи. Если значение условия пустое, то для указанного поля возвращаются все записи.

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

Примечание. В следующих примерах условий символ подчеркивания (_) означает продолжение строки и не является частью обозначения условия. При воссоздании этих условий удалите знаки подчеркивания в концах строк.
  • Like Forms!FormName!ControlName & "*" Or _
    Forms!FormName!ControlName Is Null


    Эти условия выбора сходны с теми, которые представлены в файле с примерами запросов, за исключением того, что здесь используются подстановочные символы. Например, если в поле запросов вводится «Jo», то результатом поиска будет каждая строка, начинающаяся с «Jo», то есть в эти результаты войдут «Johnson», «Jones», «Johanna» и так далее.
  • Between Forms!FormName!StartDate And Forms!FormName!EndDate Or _
    Forms!FormName!StartDate Is Null
    Возможен выбор записей по дате с помощью текстовых полей Start Date и End Date в форме запроса. В результате возвращаются записи, в которых начало и окончание дат попадают между значений, указанных в запросе. Если значение Start Date не введено в форму, то в качестве результатов возвращаются все записи, независимо от значения поля End Date.

  • Like Forms!FormName!ControlName & "*" Or Is Null

    При этом условии в качестве результата возвращаются как записи, соответствующие условию, так и записи, содержащие пустое значение. Если условие пустое, возвращаются все записи. Обратите внимание, что звездочка (*) считается параметром, поскольку она является частью большего выражения «Like». Поскольку звездочка - это жестко запрограммированное значение условия (например, Like «*»), возвращаются и записи с пустым значением.
  • Like IIf(IsNull(Forms!FormName![ControlName]), _
    "*",[Forms]![FormName]![ControlName])


    При этом условии в качестве результата возвращаются все записи, соответствующие условиям. Если условия в форме запроса отсутствуют, то возвращаются всенепустые записи.
  • IIf(IsNull(Forms!FormName![ControlName]), _
    [FieldName],[Forms]![FormName]![ControlName])


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

Ссылки

Для получения дополнительных сведений о параметрических запросах щелкните следующий номер статьи базы знаний Майкрософт:
210530 How to create a parameter In() statement (Как создать параметрический оператор In()) (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
209261 Showing all records (including null) in a parameter query (Вывод всех записей, включая пустые, в параметрическом запросе) (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 304428 - Последнее изменение :: 29 декабря 2007 г. - Редакция: 7.1
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Ключевые слова: 
kbquery kbhowto KB304428

Отправить отзыв