De QBF-techniek (Query by Form) gebruiken in Microsoft Access

Origineel KB-nummer: 304428

Opmerking

Vereist basisvaardigheden op het gebied van macro's, coderen en interoperabiliteit. Dit artikel is alleen van toepassing op een Microsoft Access-database (.accdb en .mdb).

Samenvatting

In dit artikel wordt beschreven hoe u een formulier gebruikt om de criteria voor een query op te geven. Deze techniek wordt query by form (QBF) genoemd.

Meer informatie

In de QBF-techniek maakt u een formulier waarin u querycriteria invoert. Dit formulier bevat lege tekstvakken. Elk tekstvak vertegenwoordigt een veld in een tabel waarop u een query wilt uitvoeren. U maakt alleen vermeldingen in de tekstvakken waarvoor u zoekcriteria wilt opgeven.

Het QBF-formulier lijkt op een gegevensinvoerformulier met velden die overeenkomen met de velden in een tabel. Een tabel met velden voor Naam, Adres, Plaats, Staat en Postcode kan een QBF-formulier hebben met bijbehorende velden. Als u bepaalde records wilt selecteren, kunt u een willekeurige combinatie van zoekcriteria in het formulier invoeren. U kunt alleen een plaats opgeven, of een stad en een staat, of alleen een postcode of een andere combinatie. Velden die u leeg laat, worden genegeerd. Wanneer u op een opdrachtknop in het formulier klikt, wordt er een query uitgevoerd die gebruikmaakt van de zoekcriteria uit uw formulier.

Voer de volgende stappen uit om de QBF-techniek te gebruiken:

  1. Open de voorbeelddatabase Northwind.mdb.

  2. Maak een nieuw formulier dat niet is gebaseerd op een tabel of query en sla dit op als QBF_Form.

  3. Maak in het nieuwe formulier twee tekstvakken en één opdrachtknop met de volgende eigenschappen. Sla vervolgens het formulier op:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Maak de volgende nieuwe macro en sla deze op als QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Maak de volgende nieuwe query die is gebaseerd op de tabel Orders en sla deze op als 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. Open QBF_Form in de formulierweergave. Voer de volgende combinaties van criteria in. Klik na elke combinatie op Zoeken:

    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
    

Nadat u de resultatenset voor elke query hebt weergegeven, sluit u het venster Gegevensblad. Begin vervolgens met uw volgende zoekopdracht. Telkens wanneer u op de knop Zoeken klikt, filteren de parameters in de QBF-query de gegevens op basis van de zoekcriteria die u hebt opgegeven in het QBF-queryformulier.

Opmerkingen over de QBF-parametercriteria

De QBF-voorbeeldquery in dit artikel implementeert criteria in de query als

Formulieren! FormName! ControlNameOf Formulieren! FormName! ControlNameIs Null

om de gegevens te filteren. Met deze criteria worden alle overeenkomende records geretourneerd. Als de criteriumwaarde null is, worden alle records geretourneerd voor het opgegeven veld.

U kunt een van de volgende alternatieve criteria opgeven om iets andere resultaten te retourneren.

Opmerking

In de volgende voorbeeldcriteria wordt een onderstrepingsteken (_) gebruikt als regelvolgteken. Verwijder het onderstrepingsteken van het einde van de regel wanneer u deze criteria opnieuw maakt.

  • Vind formulieren leuk! FormName! ControlName& "*" of _ Forms! FormName! ControlNameIs Null

    Deze criteria-instructie is hetzelfde als het bovenstaande QBF-voorbeeld, behalve dat u een query kunt uitvoeren met behulp van een jokerteken. Als u bijvoorbeeld 'Jo' invoert in een veld met behulp van deze criteriainstructie, retourneert de query elke record in het veld dat begint met 'Jo'. Dit geldt ook voor Johnson, Jones, Johanna, enzovoort.

  • Tussen formulieren! FormName! Begindatum en formulieren! FormName! EndDate of _ Forms! FormName! StartDate Is Null

    U kunt deze criteria-instructie gebruiken om een query uit te voeren op een datumveld met behulp van de tekstvakken Begindatum en Einddatum op het queryformulier. Records waarvan de begin- en einddatum tussen de waarden vallen die u opgeeft in het queryformulier, worden geretourneerd. Als u echter een begindatumwaarde weglaat in het formulier, retourneert de query alle records, ongeacht de einddatumwaarde.

  • Vind formulieren leuk! FormName! ControlName& "*" of is null

    Deze criteria-instructie retourneert zowel records die voldoen aan de criteria als records die null zijn. Als de criteria null zijn, worden alle records geretourneerd. Het sterretje (*) wordt beschouwd als een parameter omdat het deel uitmaakt van een grotere Like-expressie. Omdat het sterretje een in code vastgelegde criteriawaarde is (bijvoorbeeld Als '*'), worden records met null-waarden geretourneerd.

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

    Deze criteria-instructie retourneert alle records die voldoen aan de criteria. Als er geen criteria zijn opgegeven in het queryformulier, worden alle records geretourneerd die niet null zijn.

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

    Hiermee worden alle records geretourneerd die voldoen aan de criteria. Als er geen criteria zijn opgegeven in het queryformulier, worden alle records geretourneerd die niet null zijn (hetzelfde resultaat als in het bovenstaande voorbeeld).