V závislosti na vyhodnocení Výraz vrátí jednu ze dvou částí.
Funkci IIf můžete použít všude, kde se dají používat výrazy. Funkcí IIf můžete určit, jestli je nějaký výraz pravda nebo nepravda. Pokud je výraz pravdivý, funkce IIf vrátí určitou hodnotu, když je výraz nepravdivý, vrátí funkce IIf jinou hodnotu. Hodnoty vracené funkcí IIf je potřeba nastavit.
Syntaxe
IIf ( výraz , pravdivá_část , nepravdivá_část )
Syntaxe funkce IIf obsahuje tyto argumenty:
Argument |
Popis |
výraz |
Povinný argument. Výraz, který chcete vyhodnotit. |
pravdivá_část |
Povinný argument. Hodnota nebo výraz vrácený v případě, že má argument výraz hodnotu Pravda. |
část_false |
Povinný argument. Hodnota nebo výraz vrácený v případě, že má argument výraz hodnotu Nepravda. |
Poznámky
Funkce IIf vyhodnocuje vždycky argument pravdivá_část i argument nepravdivá_část, přestože vrací jenom jednu část. Z tohoto důvodu je potřeba dávat pozor na nežádoucí vedlejší účinky. Pokud se třeba při vyhodnocování argumentu nepravdivá_část zjistí chyba způsobená dělením nulou, dojde k chybě i přesto, že hodnota argumentu výraz je Pravda.
Příklady
Použití funkce IIf ve formuláři nebo sestavě Předpokládejme, že máte tabulku Zákazníci, která obsahuje pole s názvem ZeměRegion. Ve formuláři chcete označit, jestli je prvním jazykem kontaktu italština. Můžete přidat ovládací prvek a použít IIf v jeho vlastnosti Zdroj ovládacího prvku , například takto:
=IIf([Země]="Itálie", "Italština", "Jiný jazyk")
Když nyní otevřete formulář v zobrazení formuláře, zobrazuje ovládací prvek hodnotu "Italština", pokud je hodnota pole Země Itálie a "Jiný jazyk", pokud je hodnota pole Země jiná.
Použití IIf ve složitých výrazech Jako součást příkazu IIf můžete použít libovolný výraz. Můžete také "vnořit" výrazy IIf , což vám umožní vyhodnotit řadu závislých výrazů. Pokud chcete pokračovat v předchozím příkladu, můžete otestovat několik různých hodnot CountryRegion a pak zobrazit odpovídající jazyk v závislosti na tom, která hodnota existuje:
=IIf([Země]="Itálie", "Italština", IIf([Země]="Francie", "Francouzština", IIf([Země]="Německo", "Němčina", "Jiný jazyk")))
Text "Jiný jazyk" je argumentem nepravdivá_část nejvíce vnořené funkce IIf. Protože každá vnořená funkce IIf tvoří argument nepravdivá_část funkce IIf, ve které je obsažená, text "Jiný jazyk" funkce vrátí jenom v případě, že všechny argumenty výraz všech funkcí IIf budou vyhodnocené jako Nepravda.
V jiném příkladu předpokládejme, že pracujete v knihovně. Databáze knihovny obsahuje tabulku s názvem Rezervovat, která obsahuje pole s názvem Termín splnění, které obsahuje datum vrácení určité knihy. Pomocí funkce IIf ve vlastnosti Zdroj ovládacího prvku můžete vytvořit formulář, který označuje stav rezervované položky v ovládacím prvku, například takto:
=IIf([Datum_vrácení]<Date(),"ZPOŽDĚNO",IIf([]=Date(),"Vrátit dnes","Datum vrácení dosud nenastalo"))
Když nyní otevřete formulář v zobrazení formuláře, zobrazuje ovládací prvek hodnotu "ZPOŽDĚNO", pokud je hodnota pole Datum_vrácení menší než dnešní datum, "Vrátit dnes" pokud se obě data rovnají, a "Datum_vrácení dosud nenastalo" v ostatních případech.
Poznámka: Pokud chcete v argumentu výraz funkce IIf použít logické operátory, jako je "And" nebo "Or", musíte logický výraz uzavřít do funkce Eval. Podívejte se na následující ukázku tabulky.
Použití funkce IIf v dotazu
Funkce IIf se často používá pro vytvoření výpočtových polí v dotazech. Syntaxe je stejná, s výjimkou toho, že v dotazu musí výrazu předcházet alias pole a dvojtečka (:), ne symbol rovná se (=). Když se vrátíme k předcházejícímu příkladu, do řádku Pole návrhové mřížky dotazu byste zadali toto:
Jazyk: IIf([Země]="Itálie", "Italština", "Jiný jazyk")
V tomto případě je alias pole "Jazyk:".
Další informace o vytváření dotazů a počítaných polí najdete v článku Vytvoření jednoduchého výběrového dotazu.
Použití funkce IIf v kódu jazyka VBA
Poznámka: Následující příklady ukazují použití této funkce v modulu VBA (Visual Basic pro Applications). Pokud chcete další informace o práci s modulem VBA, vyberte Referenční informace pro vývojáře, které najdete v rozevíracím seznamu vedle položky Hledat a do vyhledávacího pole napište požadované pojmy.
V tomto příkladu je pomocí funkce IIf vyhodnocen parametr TestMe procedury CheckIt a v případě hodnoty větší než 1 000 je vrácen řetězec "Velký". V opačném případě je vrácen řetězec "Malý".
Function CheckIt (TestMe As Integer)
CheckIt = IIf(TestMe > 1000, "Large", "Small") End Function
Další příklady
Výraz |
Výsledky |
=IIf([Kód_letiště]="PRG","Praha",IIf([Kód_letiště]="FRA","Frankfurt",IIf([Kód_letiště]="BRU","Brusel","Jiné"))) |
Pokud je [Kód_letiště] "PRG", vrátí "Praha". Jinak, když [Kód_letiště] je "FRA", vrátí "Frankfurt". Jinak pokud [Kód_letiště] je "BRU", vrátí "Brusel". V ostatních případech vrátí "Jiné". |
=IIf([Datum_odeslání]<Date(),"Odesláno",IIf([Datum_odeslání]=Date(),"Zasláno dnes","Neodesláno")) |
Pokud [Datum_odeslání] předchází dnešnímu datu, vrátí "Odesláno". Jinak pokud se [Datum_odeslání] rovná dnešnímu datu, vrátí "Zasláno dnes". V ostatních případech vrátí "Neodesláno." |
=IIf([Datum_nákupu]<#1/1/2008#,"Starý","Nový") |
Pokud je [Datum_nákupu] dřívější než 1/1/2008, vrátí hodnotu "Starý". Jinak vrátí hodnotu "Nový." |
=IIf(Vyhodnotit([Volty] Between 12 And 15 And [Ampéry] Between 0,25 And 0,3),"OK","Nezkalibrováno") |
Pokud je argument [Volty] v rozmezí od 12 do 15 a argument [Ampéry] v rozmezí 0,25 a 0,3, vrátí "OK". Jinak vrátí "Nezkalibrováno." |
=IIf(Vyhodnotit([Země] In ("Kanada","USA","Mexiko")),"Severní Amerika","Jiné") |
Pokud argument [Země] je "Kanada", "USA" nebo "Mexiko", vrátí "Severní Amerika". Jinak vrátí "Jiné". |
=IIf([Průměr]>=90,"A",IIf([Průměr]>=80,"B",IIf([Průměr]>=70,"C",IIf([Průměr]>=60,"D","F")))) |
Pokud je [Průměr] 90 a víc, vrátí "A". Jinak když je [Průměr] 80 a víc, vrátí "B". Jinak pokud je [Průměr] 70 a víc, vrátí "C". Jinak jestliže je [Průměr] 60 a víc, vrátí "D". V ostatních případech vrátí "F". |
Poznámka: Pokud funkci IIf použijete k vytvoření počítaného pole dotazu, zaměňte symbol rovná se (=) za alias pole a dvojtečku (:). Například zadejte Stav: IIf([Datum_odeslání]<Date(),"Odesláno",IIf([Datum_odeslání]=Date(),"Zasláno dnes","Neodesláno"))