Så här använder du formulärfrågan (QBF) i Microsoft Access

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Ursprungligt KB-nummer:   304428

Anteckning

Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter. Den här artikeln gäller endast för Microsoft Access-databaser (.accdb och .mdb).

Sammanfattning

I den här artikeln beskrivs hur du använder ett formulär för att ange villkor för en fråga. Den här metoden kallas fråga per formulär (QBF).

Mer information

Med QBF-tekniken skapar du ett formulär där du anger frågevillkor. Det här formuläret innehåller tomma textrutor. Varje textruta representerar ett fält i en tabell som du vill avfråga. Du gör endast poster i de textrutor som du vill ange sökvillkor för.

QBF-formuläret liknar ett datainmatningsformulär som har fält som matchar fälten i en tabell. En tabell som innehåller fält för Namn, Adress, Ort, Delstat och Postnummer kan ha ett QBF-formulär som har motsvarande fält. Du kan välja vissa poster genom att ange valfri kombination av sökvillkor i formuläret. Du kan endast ange en stad, en stad och en delstat, ett postnummer eller någon annan kombination. Fält som du lämnar tomt ignoreras. När du klickar på en kommandoknapp i formuläret körs en fråga i Access som använder sökvillkoren från formuläret.

Om du vill använda QBF-tekniken gör du så här:

  1. Öppna exempeldatabasen Northwind.mdb.

  2. Skapa ett nytt formulär som inte baseras på någon tabell eller fråga och spara det som QBF_Form.

  3. I det nya formuläret skapar du två textrutor och en kommandoknapp som har följande egenskaper. Spara sedan formuläret:

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Skapa följande nya makro och spara det sedan som QBF_Macro:

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Skapa följande nya fråga som baseras på tabellen Order och spara den sedan som 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. Öppna QBF_Form i formulärvyn. Ange följande kombinationer av villkor. Klicka på Sök efter varje kombination:

    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
    

Stäng databladsfönstret när du har visa resultatuppsättningen för varje fråga. Påbörja sedan nästa sökning. Varje gång du klickar på knappen Sök filtrerar parametrarna i QBF-frågan data baserat på de sökvillkor som du angav i QBF-frågeformuläret.

Kommentarer om parametervillkoret QBF

I exemplet med QBF-frågan i den här artikeln implementeras villkor i frågan som

Forms! FormName! ControlName Eller Formulär! FormName! ControlName Is Null

för att filtrera data. De här villkoren returnerar alla matchande poster. Om villkorsvärdet är null, returneras alla poster för det angivna fältet.

Du kan ange något av följande alternativa villkor för att returnera något annorlunda resultat.

Anteckning

I följande exempelvillkor används ett understreck (_) som ett rad fortsättningstecken. Ta bort understrecket från slutet av raden när du skapar villkoren igen.

  • Som Forms! FormName! ControlName& "*" Eller _ Forms! FormName! ControlName Is Null

    Det här villkorsutdraget är detsamma som QBF-exemplet ovan, förutom att du kan köra frågor med hjälp av ett jokertecken. Om du till exempel anger "Jo" i ett fält med hjälp av det här villkorsutdraget returnerar frågan alla poster i fältet som börjar med "Jo". Detta inkluderar Johnson, Jones, Jage, och så vidare.

  • Mellan Forms! FormName! Startdatum och formulär! FormName! EndDate Eller _ Forms! FormName! Startdatum är Null

    Du kan använda det här villkorsutdraget för att köra frågor mot ett datumfält med hjälp av textrutorna Startdatum och Slutdatum i frågeformuläret. Poster vars start- och slutdatum ligger mellan de värden som du anger i frågeformuläret returneras. Om du utelämnar ett startdatumvärde i formuläret returnerar frågan emellertid alla poster, oavsett slutdatumvärdet.

  • Som Forms! FormName! ControlName& "*" Eller Is Null

    Det här villkorsutdraget returnerar både poster som matchar villkoren och poster som är null. Om villkoret är null, returneras alla poster. Observera att asterisken ( * ) betraktas som en parameter eftersom den är en del av ett större uttryck som. Eftersom asterisken är ett hårdkodat villkorsvärde (till exempel Som "*"), returneras poster med null-värden.

  • Som Om(ÄrNull(formulär!FormName! [Kontrollnamn]), _ "*",[Formulär]! [FormName]! [Kontrollnamn])

    Det här villkorsutdraget returnerar alla poster som matchar villkoren. Om inga villkor anges i frågeformuläret returneras alla poster som inte är null.

  • Omf(ärNull(formulär!FormName! [Kontrollnamn]), _ [Fältnamn],[Formulär]! [FormName]! [Kontrollnamn])

    Då returneras alla poster som matchar villkoren. Om inga villkor anges i frågeformuläret returneras alla poster som inte är null (samma resultat som i exemplet ovan).