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:
Öppna exempeldatabasen Northwind.mdb.
Skapa ett nytt formulär som inte baseras på någon tabell eller fråga och spara det som QBF_Form.
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_MacroSkapa följande nya makro och spara det sedan som QBF_Macro:
Action: OpenQuery Query Name: QBF_Query View: Datasheet Data Mode: EditSkapa 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Ö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).