tento přístupový tutoriál vysvětluje, jak vytvořit vyhledávací formulář s více kritérii.
můžete si také přečíst:
přístup k DoCmd.Metoda OpenForm pro otevření přístupového formuláře
přístupová hodnota pole závisí na jiném políčku
návratový přístupový formulář vstup pro přístup ke zprávě nebo formuláři nebo dotazu
přístup vytvořte vyhledávací formulář s více kritérii
někdy je třeba vytvořit vyhledávací formulář, kde si uživatelé mohou vybrat konkrétní kritéria. Nejjednodušším řešením je přímé filtrování dat pro každé pole, jako je použití Autofilteru v aplikaci Excel, ale to není vůbec elegantní.
Access poskytuje funkci formuláře nazvanou Filtr podle formuláře, která se velmi snadno používá.
vyberte tabulku / dotaz > vytvořit > formulář > použít filtr / řazení
nyní můžete vybrat více kritérií, můžete dokonce vybrat hodnotu z rozevíracího pole. Tyto hodnoty rozevíracích polí jsou však na sobě nezávislé.
můžete také použít nebo kritéria kliknutím na kartu Or.
po dokončení výběru klikněte na Přepnout filtr
lepší způsob, jak provést filtrování, je, aby si uživatelé mohli vybrat ze závislých rozevíracích polí.
například v prvním rozevíracím seznamu uživatelé zvolí oddělení A a poté ve druhém rozevíracím seznamu mohou uživatelé zobrazit seznam osob oddělení a.
tento článek vám ukáže, jak takové filtrování provést.
Vytvořte výsledný formulář
Předpokládejme, že máme dotaz, jak je uvedeno níže. Naším cílem je umožnit uživatelům vybrat oddělení pro zobrazení informací o zaměstnancích nebo vybrat oddělení + ID zaměstnance.
vytvoříme „formulář výsledku“, který zobrazí výsledek vyhledávání.
oddělení | ID zaměstnance | datum zaměstnání | plat | příspěvek |
---|---|---|---|---|
účet | 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 |
mzdy | 5 | 1/1/2004 | 50000 | 500 |
HR | 6 | 1/1/2005 | 60000 | 600 |
klikněte na dotaz a pod záložkou vytvořit, Vyberte další formuláře > DataSheet
Nyní uložte formulář jako result_frm. V případě, že byste omylem změnili výsledná data, měli byste změnit uzamčenou vlastnost každého textového pole na Ano
v tomto příkladu chci vrátit všechna pole Query1 ve formě výsledku. Volím evidenci, protože každý záznam může být zobrazen v jednom řádku s vodorovným posuvníkem. Nechci používat spojitý formulář nebo jeden formulář, protože každý záznam je zobrazen v několika řádcích.
Vytvořte vyhledávací formulář
vytvořte prázdný formulář a poté přidejte dvě pole se seznamem (Combo_Dept, Combo_EmpID) a jedno tlačítko (search_btn), jak je uvedeno níže.
1) Klikněte na Combo_Dept, do vlastnosti zdroj řádku zadejte
SELECT DISTINCT Department FROM Query1;
zdroj řádku je to, co můžete vybrat v comboboxu.
2) Klikněte na Combo_EmpID, v řádku zdroj vlastnost, Typ
SELECT FROM Query1 WHERE =!!;
3) Vyberte Combo_Dept, vyberte po události aktualizace a vytvořte níže uvedený postup
Private Sub Combo_Dept_AfterUpdate() Me.Combo_EmpID = Null Me.Combo_EmpID.RequeryEnd Sub
když vyberete oddělení, Combo_EmpID se resetuje na Null a poté znovu spustí dotaz
4) Klikněte pravým tlačítkem myši na search_btn a poté zvolte Build Event
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
Nyní jste úspěšně vytvořili jednoduchý vyhledávací formulář. Poté, co jste vybrali kritéria ve vyhledávacím formuláři, jakmile kliknete na tlačítko Hledat, zobrazí se formulář výsledku a zobrazí výsledek.