denna tillgång handledning förklarar hur man skapar ett sökformulär med flera kriterier.
du kanske också vill läsa:
Access DoCmd.OpenForm-metod för att öppna Access-formulär
Access Combo Box-värdet beror på en annan kombinationsruta
Return Access-Formulärinmatning för att komma åt rapport eller formulär eller Fråga
Access skapa sökformulär med flera kriterier
ibland måste du skapa ett sökformulär där användare kan välja specifika kriterier. Den enklaste lösningen är att direkt filtrera data för varje fält som att använda AutoFilter i Excel, men det är inte elegant alls.
Access tillhandahåller en Formfunktion som kallas Filter by Form som är mycket lätt att använda.
välj en tabell / fråga > skapa > Form > Använd Filter / Sortera
nu kan du välja flera kriterier, du kan även välja ett värde från rullgardinsmenyn. Men dessa värden på rullgardinsrutor är oberoende av varandra.
du kan också använda eller kriterier genom att klicka på fliken eller.
när du väljer är klar, klicka på Toggle Filter
ett bättre sätt att göra filtrering är för användare att välja mellan beroende rullgardinsrutor.
till exempel i den första rullgardinsmenyn väljer användare avdelning A, och sedan i den andra rullgardinsmenyn kan användare visa en lista över person i avdelning A.
den här artikeln visar hur du gör sådan filtrering.
skapa ett resultatformulär
Antag att vi har en fråga enligt nedan. Vårt mål är att tillåta användare att välja avdelning för att visa medarbetarinformation, eller välj avdelning + anställd ID.
vi kommer att göra en ”resultatform” som visar sökresultatet.
avdelning | anställd ID | anställningsdatum | lön | ersättning |
---|---|---|---|---|
konto | 1 | 1/1/2000 | 10000 | 100 |
Admin | 2 | 1/1/2001 | 20000 | 200 |
Admin | 3 | 1/1/2002 | 30000 | 300 |
Admin | 4 | 1/1/2003 | 40000 | 400 |
lön | 5 | 1/1/2004 | 50000 | 500 |
HR | 6 | 1/1/2005 | 60000 | 600 |
klicka på frågan och under fliken Skapa, Välj fler formulär > datablad
spara nu formuläret som result_frm. Om du av misstag skulle ändra resultatdata bör du ändra den låsta egenskapen för varje textruta till Ja
i det här exemplet vill jag returnera alla fält av Query1 i Resultatform. Jag väljer datablad eftersom varje post kan visas i en rad med horisontell rullningslist. Jag föredrar inte att använda kontinuerlig Form eller enstaka Form eftersom varje post visas i flera rader.
skapa ett sökformulär
skapa ett tomt formulär och lägg sedan till två kombinationsrutor (Combo_Dept, Combo_EmpID) och en knapp (search_btn) som visas nedan.
1) Klicka på Combo_Dept, i egenskapen Radkälla, skriv
SELECT DISTINCT Department FROM Query1;
Radkälla är vad du kan välja i kombinationsrutan.
2) Klicka på Combo_EmpID, i raden Källegenskap, skriv
SELECT FROM Query1 WHERE =!!;
3) Välj Combo_Dept, välj efter Uppdateringshändelse och bygg nedanstående procedur
Private Sub Combo_Dept_AfterUpdate() Me.Combo_EmpID = Null Me.Combo_EmpID.RequeryEnd Sub
när du väljer en avdelning återställs Combo_EmpID till Null och kör sedan frågan
4) Högerklicka på search_btn och välj sedan Bygghändelse
Private Sub search_btn_Click() If IsNull(Me.Combo_EmpID) Then searchCriteria = "='" & Me.Combo_Dept & "'" searchSQL = "Select * FROM Query1 where " & searchCriteria Else searchCriteria = "='" & Me.Combo_Dept & "' AND =" & Me.Combo_EmpID searchSQL = "Select * FROM Query1 where " & searchCriteria End If DoCmd.OpenForm "result_frm", 3, searchSQLEnd Sub
nu har du skapat ett enkelt sökformulär. När du har valt kriterier i sökformuläret, när du klickar på sökknappen, kommer Resultatformuläret att dyka upp och visar resultatet.