Jak używać techniki zapytania według formularza (QBF) w programie Microsoft Access

Oryginalny numer KB: 304428

Uwaga

Wymaga podstawowych umiejętności w zakresie makr, kodowania i współdziałania. Ten artykuł dotyczy tylko bazy danych programu Microsoft Access (.mdb lub .accdb).

Podsumowanie

W tym artykule pokazano, jak za pomocą formularza określić kryteria zapytania. Ta technika jest nazywana zapytaniem według formularza (QBF).

Więcej informacji

W technice QBF tworzysz formularz, w którym wprowadzasz kryteria zapytania. Ten formularz zawiera puste pola tekstowe. Każde pole tekstowe reprezentuje pole w tabeli, dla których chcesz wykonać zapytanie. Wpisy można tworzyć tylko w polach tekstowych, dla których chcesz określić kryteria wyszukiwania.

Formularz QBF przypomina formularz wpisu danych, który zawiera pola zgodne z polami w tabeli. Tabela zawierająca pola Nazwa, Adres, Miasto, Stan i Kod POCZTOWY może mieć formularz QBF zawierający odpowiednie pola. Aby wybrać określone rekordy, możesz wprowadzić dowolną kombinację kryteriów wyszukiwania w formularzu. Możesz określić tylko miasto, miasto i stan, tylko kod pocztowy lub dowolną inną kombinację. Pola, które pozostawisz puste, są ignorowane. Po kliknięciu przycisku polecenia w formularzu program Access uruchamia zapytanie, które używa kryteriów wyszukiwania z formularza.

Aby użyć techniki QBF, wykonaj następujące kroki:

  1. Otwórz przykładową Northwind.mdb bazy danych.

  2. Utwórz nowy formularz, który nie jest oparty na żadnej tabeli lub zapytaniu, i zapisz go jako QBF_Form.

  3. W nowym formularzu utwórz dwa pola tekstowe i jeden przycisk polecenia, który ma następujące właściwości. Następnie zapisz formularz:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Utwórz następujące nowe makro, a następnie zapisz je jako QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Utwórz następujące nowe zapytanie oparte na tabeli Orders(Zamówienia), a następnie zapisz je jako 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. Otwórz QBF_Form w widoku Formularz. Wprowadź następujące kombinacje kryteriów. Kliknij pozycję Wyszukaj po każdej kombinacji:

    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
    

Po wyświetleniu zestawu wyników dla każdego zapytania zamknij okno Arkusz danych. Następnie rozpocznij następne wyszukiwanie. Za każdym razem, gdy klikniesz przycisk Wyszukaj , parametry zapytania QBF filtrują dane na podstawie kryteriów wyszukiwania określonych w formularzu zapytania QBF.

Uwagi dotyczące kryteriów parametrów QBF

Przykładowe zapytanie QBF w tym artykule implementuje kryteria w zapytaniu jako

Formularzy! FormName! ControlNameLub Formularze! FormName! ControlNameMa wartość null

w celu filtrowania danych. Te kryteria zwracają wszystkie pasujące rekordy. Jeśli wartość kryteriów ma wartość null, wszystkie rekordy są zwracane dla określonego pola.

Możesz określić dowolne z następujących kryteriów alternatywnych, aby zwrócić nieco inne wyniki.

Uwaga

W poniższych przykładowych kryteriach podkreślenie (_) jest używane jako znak kontynuacji wiersza. Usuń podkreślenie z końca wiersza podczas ponownego tworzenia tych kryteriów.

  • Lubię formularze! FormName! ControlName& "*" Lub _ Forms! FormName! ControlNameMa wartość null

    Ta instrukcja kryteriów jest taka sama jak powyższy przykład QBF, z tą różnicą, że można wykonywać zapytania przy użyciu symbolu wieloznacznego. Jeśli na przykład wprowadzisz ciąg "Jo" w polu przy użyciu tej instrukcji kryteriów, zapytanie zwróci każdy rekord w polu rozpoczynanym od "Jo". Dotyczy to również Johnsona, Jonesa, Johanny itd.

  • Między formularzami! FormName! StartDate i formularze! FormName! EndDate lub _ Forms! FormName! Parametr StartDate ma wartość Null

    Ta instrukcja kryteriów służy do wykonywania zapytań dotyczących pola daty przy użyciu pól tekstowych Data rozpoczęcia i Data zakończenia w formularzu zapytania. Zwracane są rekordy, których daty rozpoczęcia i zakończenia mieszczą się między wartościami określonymi w formularzu zapytania. Jeśli jednak pominiesz wartość Daty rozpoczęcia w formularzu, zapytanie zwróci wszystkie rekordy, niezależnie od wartości Data zakończenia.

  • Lubię formularze! FormName! ControlName& "*" lub ma wartość null

    Ta instrukcja kryteriów zwraca zarówno rekordy zgodne z kryteriami, jak i rekordy o wartości null. Jeśli kryteria mają wartość null, zwracane są wszystkie rekordy. Należy pamiętać, że gwiazdka (*) jest uważana za parametr, ponieważ jest częścią większego wyrażenia Like. Ponieważ gwiazdka jest wartością kryteriów zakodowanych na stałe (na przykład Like "*"), zwracane są rekordy z wartościami null.

  • Podobnie jak IIf(IsNull(Forms!FormName! [ControlName]), _ "*",[Forms]! [FormName]! [ControlName])

    Ta instrukcja kryteriów zwraca wszystkie rekordy zgodne z kryteriami. Jeśli w formularzu zapytania nie określono żadnych kryteriów, zwracane są wszystkie rekordy, które nie mają wartości null.

  • IIf(IsNull(Forms!FormName! [ControlName]), _ [FieldName],[Forms]! [FormName]! [ControlName])

    Spowoduje to zwrócenie wszystkich rekordów zgodnych z kryteriami. Jeśli w formularzu zapytania nie określono żadnych kryteriów, zwracane są wszystkie rekordy , które nie mają wartości null (taki sam wynik jak w powyższym przykładzie).