Hledání v databázi - nevázané pole se seznamem
V mnoha případech je výhodnější místo jednoduchého textového pole použít výběrový seznam. Uživatel má možnost si hledanou hodnotu vybrat. Tento způsob je vhodné použít, když hledaná hodnota je text a výsledný seznam hodnot není příliš rozsáhlý.
Vytvoříme výchozí formulář pro hledání studenta podle bydliště (f_hleda_bydl_stud). Pro výběr bydliště použijeme nevázané pole se seznamem, zjistíme hned jeho název (PoleSeSeznamem0), budeme ho potřebovat pro nastavení v makru. V datových vlastnostech výběrového seznamu sestavíme nejdříve zdroj dat.
Ve výběrovém seznamu chceme mít všechny hodnoty, které jsou ve sloupci trida tabulky studenti. Hodnoty se nebudou opakovat, to nastavíme vlastností Souhrn - seskupit. Zdroj dat, nastavený v tvúrci dotazů, jak ukazuje předchozí obrázek, se zobrazí po uložení jako SQL dotaz (zvýrazněno zeleně).
Je vhodné využít další vlastnosti výběrového seznamu. Pokud omezíme hodnoty na seznam, nemůže uživatel zadávat do políčka jiné hodnoty než jsou v seznamu. Když ještě vhodně nastavíme výchozí hodnotu, nemůže se stát, že hledání skončí neúspěšně.
Pro zobrazení nalezených informací budeme potřebovat další formulář. Výsledkem hledání je zobrazení více studentů, k tomu nám poslouží vlastnost Nekonečné formuláře. Formulář pojmenujeme f_zobraz_bydl_stud.
Vytvoříme potřebné makro:
- nejdřív otevřeme formulář f_zobraz_bydl_stud. Ve vlastnostech akce nastavíme "podmínku where" následovně: bydliště v tabulce studenti se má rovnat údaji, který je vybrán v prvku PoleSeSeznamem0. Podmínku sestavíme v Tvůrci výrazů:
- následně můžeme zavřít výchozí formulář pro hledání f_hleda_bydl_stud, dále ho nebudeme potřebovat.
Pořadí akcí v makru nemůžeme zaměnit. Makro pojmenujeme m_hleda_bydl_stud.
Navržené makro připojíme k tlačítku Vyhledat a zkontrolujeme jeho funkčnost. Když vybereme ze seznamu bydliště studenta, zobrazí se nám nalezené informace. Nemúže se stát, že by formulář nic nezobrazil, protože v seznamu jsou existující hodnoty bydliště.