Jak používat techniku dotazování podle formuláře (QBF) v Microsoft Accessu

Původní číslo KB: 304428

Poznámka

Vyžaduje základní dovednosti v oblasti maker, kódování a vzájemné spolupráce. Tento článek se týká pouze databáze Microsoft Access (.accdb a .mdb).

Souhrn

V tomto článku se dozvíte, jak pomocí formuláře zadat kritéria pro dotaz. Tato technika se nazývá dotaz podle formuláře (QBF).

Další informace

V technice QBF vytvoříte formulář, ve kterém zadáte kritéria dotazu. Tento formulář obsahuje prázdná textová pole. Každé textové pole představuje pole v tabulce, na které se chcete dotazovat. Položky se zadávají jenom v textových polích, pro která chcete zadat kritéria hledání.

Formulář QBF se podobá formuláři pro zadávání dat, který obsahuje pole, která odpovídají polím v tabulce. Tabulka, která obsahuje pole pro Jméno, Adresu, Město, Stát a PSČ, může mít formulář QBF, který obsahuje odpovídající pole. Pokud chcete vybrat určité záznamy, můžete do formuláře zadat libovolnou kombinaci kritérií hledání. Můžete zadat pouze město, město a stát, nebo pouze PSČ nebo jakoukoli jinou kombinaci. Pole, která ponecháte prázdná, se ignorují. Když ve formuláři kliknete na příkazové tlačítko, Access spustí dotaz, který používá kritéria hledání z formuláře.

Pokud chcete použít techniku QBF, postupujte takto:

  1. Otevřete Northwind.mdb ukázkové databáze.

  2. Vytvořte nový formulář, který není založený na žádné tabulce nebo dotazu, a uložte ho jako QBF_Form.

  3. V novém formuláři vytvořte dvě textová pole a jedno příkazové tlačítko, které má následující vlastnosti. Pak formulář uložte:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Vytvořte následující nové makro a uložte ho jako QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Vytvořte následující nový dotaz založený na tabulce Objednávky a uložte ho 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. Otevřete QBF_Form ve formulářovém zobrazení. Zadejte následující kombinace kritérií. Po každé kombinaci klikněte na Hledat:

    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 zobrazení sady výsledků pro každý dotaz zavřete okno Datový list. Pak spusťte další hledání. Pokaždé, když kliknete na tlačítko Hledat , parametry v dotazu QBF filtrují data na základě kritérií hledání zadaných ve formuláři dotazu QBF.

Poznámky ke kritériím parametrů QBF

Ukázkový dotaz QBF v tomto článku implementuje kritéria v dotazu jako

Formuláře! FormName! ControlName (Název ovládacího prvku)Nebo Formuláře! FormName! ControlName (Název ovládacího prvku)Je null

a vyfiltrujte data. Tato kritéria vrátí všechny odpovídající záznamy. Pokud je hodnota kritéria null, vrátí se všechny záznamy pro zadané pole.

Pokud chcete vrátit mírně odlišné výsledky, můžete zadat libovolné z následujících alternativních kritérií.

Poznámka

V následujících ukázkových kritériích se jako znak pokračování řádku používá podtržítko (_). Při opětovném vytvoření těchto kritérií odeberte podtržítko z konce řádku.

  • Like Forms! FormName! ControlName& "*" nebo _ Forms! FormName! ControlName (Název ovládacího prvku)Je null

    Toto kritérium je stejné jako výše uvedená ukázka QBF, ale dotaz můžete použít zástupný znak. Pokud například zadáte "Jo" do pole pomocí tohoto příkazu kritéria, dotaz vrátí všechny záznamy v poli, které začíná na "Jo". Patří sem Johnson, Jones, Johanna a tak dále.

  • Mezi formuláři! FormName! StartDate a formuláře! FormName! EndDate nebo _ Forms! FormName! StartDate má hodnotu Null.

    Tento příkaz kritéria můžete použít k dotazování pole kalendářního data pomocí textových polí Počáteční datum a Koncové datum ve formuláři dotazu. Vrátí se záznamy, jejichž počáteční a koncové datum spadá mezi hodnoty zadané ve formuláři dotazu. Pokud ale hodnotu Počáteční datum ve formuláři vynecháte, dotaz vrátí všechny záznamy bez ohledu na hodnotu Koncové datum.

  • Like Forms! FormName! ControlName& "*" nebo je null

    Tento příkaz kritéria vrátí jak záznamy, které splňují kritéria, tak záznamy, které mají hodnotu null. Pokud jsou kritéria null, vrátí se všechny záznamy. Všimněte si, že hvězdička (*) se považuje za parametr, protože je součástí většího výrazu Like. Protože hvězdička je pevně zakódovaná hodnota kritérií (například Like "*"), vrátí se záznamy s hodnotami null.

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

    Tento příkaz kritéria vrátí všechny záznamy, které splňují kritéria. Pokud nejsou ve formuláři dotazu zadána žádná kritéria, vrátí se všechny záznamy, které nemají hodnotu null.

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

    Tím se vrátí všechny záznamy, které splňují kritéria. Pokud nejsou ve formuláři dotazu zadána žádná kritéria, vrátí se všechny záznamy, které nemají hodnotu null (stejný výsledek jako v příkladu výše).