Использование метода запроса по форме (QBF) в Microsoft Access

Исходный номер базы знаний: 304428

Примечание.

Требуются базовые навыки работы с кодом, макросами и взаимодействия. Эта статья относится только к базам данных Microsoft Access (.accdb и .mdb).

Сводка

В этой статье показано, как использовать форму для указания критериев для запроса. Этот метод называется запросом по форме (QBF).

Дополнительные сведения

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

Форма QBF напоминает форму ввода данных, которая содержит поля, соответствующие полям в таблице. Таблица с полями Name, Address, City, State и ZIP Code может иметь форму QBF с соответствующими полями. Чтобы выбрать определенные записи, можно ввести любое сочетание условий поиска в форме. Можно указать только город, город и штат, только почтовый индекс или любое другое сочетание. Поля, которые оставляют пустыми, игнорируются. При нажатии кнопки команды в форме Access выполняет запрос, который использует условия поиска из формы.

Чтобы использовать метод QBF, выполните следующие действия.

  1. Откройте пример Northwind.mdb базы данных.

  2. Создайте новую форму, не основанную ни на одной таблице или запросе, и сохраните ее как QBF_Form.

  3. В новой форме создайте два текстовых поля и одну кнопку команды со следующими свойствами. Затем сохраните форму:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Создайте следующий макрос, а затем сохраните его как QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Создайте следующий запрос, основанный на таблице Orders, и сохраните его как QBF_Query:

    Field: CustomerID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatCustomer] Or Forms![QBF_Form]![WhatCustomer] Is Null
    
    Field: EmployeeID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatEmployee] Or Forms![QBF_Form]![WhatEmployee] Is Null
    
    NOTE: When you type the criteria, make sure that you type the entire criteria in a single Criteria field; do not split the criteria by placing the 'Or' section on a separate row.  
    
    Field: OrderID
    Field: 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
    

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

Заметки о критериях параметров QBF

Пример запроса QBF в этой статье реализует критерии в запросе как

Формы! FormName! ControlNameИли формы! FormName! ControlNameИмеет значение NULL

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

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

Примечание.

В следующем примере условий символ подчеркивания (_) используется в качестве символа продолжения строки. Удалите символ подчеркивания из конца строки при повторном создании этих условий.

  • Нравится формам! FormName! ControlName& "*" или _ Forms! FormName! ControlNameИмеет значение NULL

    Этот оператор условия совпадает с приведенным выше примером QBF, за исключением того, что запрос можно выполнить с помощью подстановочного знака. Например, если ввести "Jo" в поле с помощью этой инструкции условия, запрос возвращает каждую запись в поле, начинающуюся с "Jo". Сюда входят Джонсон, Джонс, Иоганна и так далее.

  • Между формами! FormName! StartDate и Forms! FormName! EndDate или _ Forms! FormName! StartDate имеет значение NULL

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

  • Нравится формам! FormName! ControlName& "*" или имеет значение NULL

    Этот оператор условия возвращает как записи, соответствующие условиям, так и записи, имеющие значение NULL. Если условия имеют значение NULL, возвращаются все записи. Обратите внимание, что звездочка (*) считается параметром, так как она является частью большего выражения Like. Так как звездочка является жестко заданным значением критерия (например, Like "*"), возвращаются записи со значениями NULL.

  • Как IIf(IsNull(Forms!FormName! [ControlName]), _ "*",[Forms]! [Имя_формы]! [ControlName])

    Этот оператор условия возвращает все записи, соответствующие условиям. Если в форме запроса не указаны условия, возвращаются все записи, не имеющие значения NULL.

  • IIf(IsNull(Forms!FormName! [ControlName]), _ [FieldName],[Forms]! [Имя_формы]! [ControlName])

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