Pokud používáte Microsoft Access, často potřebujete pracovat s hodnotami, které nejsou uložené přímo v datech. Potřebujete třeba vypočítat prodejní daň na objednávce nebo celkovou hodnotu samotné objednávky. Tyto hodnoty můžete počítat pomocí výrazů. Abyste mohli použít výrazy, musíte je nejdřív napsat s použitím správné syntaxe. Syntaxe představuje sadu pravidel, podle kterých se správně kombinují slova a symboly ve výrazu. Čtení výrazů v Accessu je ze začátku trochu náročnější. S pochopením syntaxe výrazů a trochou praxe se ale všechno zjednoduší.
V tomto článku
Základní informace o výrazech
Výraz je kombinace předdefinovaných nebo uživatelem definovaných funkcí, identifikátorů, operátorů, hodnot nebo konstant. Výsledkem výrazu je jedna hodnota.
Následující výraz například obsahuje běžné součásti:
=Sum([Purchase Price])*0.08
-
Sum() je integrovaná funkce.
-
[Purchase Price] (Kupní cena) je identifikátor.
-
* je matematický operátor.
-
0.08 (0,08) je konstanta.
Tento výraz můžete použít v textovém poli v zápatí formuláře nebo sestavy k výpočtu DPH pro skupinu položek.
Výrazy můžou být mnohem složitější nebo jednodušší než uvedený příklad. Například tento výraz Logická hodnota se skládá jenom z operátoru a konstanty:
>0
Tento výraz vrátí hodnotu:
-
True (Pravda) při porovnání s číslem větším než 0.
-
False (Nepravda) při porovnání s číslem menším než 0.
Tento výraz můžete použít ve vlastnosti Ověřovací pravidlo ovládacího prvku nebo pole tabulky, abyste měli jistotu, že budou zadané hodnoty vždy kladné. Výrazy se používají na různých místech k výpočtům, práci se znaky nebo testování dat. Tabulky, dotazy, formuláře, sestavy a makra mají vlastnosti, pro které můžete zadávat výrazy. Výrazy můžete například použít ve vlastnostech ovládacího prvku Zdroj ovládacího prvku a Výchozí hodnota. Můžete je použít také ve vlastnosti Ověřovací pravidlo pole tabulky.
Součásti výrazu
Pokud chcete vytvořit výraz, zkombinujete identifikátory pomocí funkcí, operátorů, konstant a hodnot. Libovolný platný výraz musí obsahovat aspoň jednu funkci nebo aspoň jeden identifikátor a může obsahovat také konstanty nebo operátory. Výraz můžete použít také jako část jiného výrazu – obvykle argumentu nebo funkce. Tomu se říká vnoření výrazu.
-
Identifikátory Obecný formulář je:
[Collection name]![Object name].[Property name]
Vy musíte jenom zadat dostatek částí identifikátoru, aby byl v kontextu vašeho výrazu jedinečný. Identifikátor má často formát [Object name].
-
Funkce Obecný formulář je:
Function(argument, argument)
Jeden z argumentů je obvykle identifikátor nebo výraz. Některé funkce nevyžadují žádné argumenty. Než použijete konkrétní funkci, podívejte se na její syntax. Další informace najdete v tématu popisujícím funkce (seřazené podle kategorie).
-
Operátory Obecný formulář je:
Identifier operator identifier
U tohoto formátu jsou určité výjimky, jak je uvedeno v oddílu Operátory.
-
Konstanty Obecný formulář je:
Identifier comparison_operator constant
-
Hodnoty Hodnoty se můžou ve výrazu vyskytovat na mnoha místech.
Objekty, kolekce a vlastnosti
Všechny jednotlivé tabulky, dotazy, formuláře, sestavy a pole v databázi aplikace Access se označují jako objekty. Každý objekt má název. Některé objekty už název mají, třeba tabulka Kontakty v databázi vytvořená ze šablony Kontakty v Microsoft Office Accessu. Když vytvoříte nový objekt, dáte mu název.
Sada všech členů určitého typu objektu se označuje jako kolekce. Kolekce je například sada všech tabulek v databázi. Některé objekty, které jsou členem kolekce ve vaší databázi, můžou být také kolekcemi, které obsahují další objekty. Například objekt tabulky představuje kolekci, která obsahuje objekty pole.
Objekty mají vlastnosti, které popisují vlastnosti objektu a nabízí možnost je změnit. Například objekt dotazu má vlastnost Výchozí zobrazení, která popisuje i umožňuje určit, jak se dotaz zobrazí při spuštění.
V následujícím schématu můžete vidět vztah mezi kolekcemi, objekty a vlastnostmi:
|
3 Vlastnost 2 Objekt 1 Kolekce |
Identifikátory
Když použijete ve výrazu objekt, kolekci nebo vlastnost, odkazujete na daný prvek s použitím identifikátoru. Identifikátor obsahuje název prvku, který identifikujete, a také název prvku, ke kterému patří. Například identifikátor pro pole obsahuje název pole a název tabulky, do které pole patří. Příkladem takového identifikátoru je:
[Customers]![BirthDate]
V některých případech funguje název prvku sám o sobě jako identifikátor. Platí to, pokud je název prvku v kontextu výrazu, který vytváříte, jedinečný. Zbytek identifikátoru vyplývá z kontextu. Když například navrhujete dotaz, který používá jenom jednu tabulku, budou samotná pole fungovat jako identifikátory, protože názvy polí v tabulce musí být v této tabulce jedinečné. Vzhledem k tomu, že používáte jenom jednu tabulku, obsahuje název tabulky každý identifikátor, který používáte v daném dotazu k odkazování na pole.
V ostatních případech je nutné k tomu, aby odkaz fungoval, uvést přesně části identifikátoru. Platí to tehdy, když není identifikátor jedinečný v kontextu výrazu. V případě nejasnosti je potřeba přesně uvést dostatečný počet částí identifikátoru, aby byl v kontextu jedinečný. Předpokládejme například, že navrhujete dotaz, který používá tabulku s názvem Výrobky a tabulku s názvem Objednávky, a že obě tabulky obsahují pole s názvem IDProduktu. V takovém případě musí identifikátor, který použijete v dotazu pro odkaz na pole IDProduktu, obsahovat kromě názvu pole také název tabulky. Příklad:
[Products]![ProductID]
Operátory identifikátoru V identifikátoru je možné použít jeden ze tří operátorů:
-
Operátor vykřičník (!)
-
Operátor tečka (.)
-
Operátor hranaté závorky ([ ])
Tyto operátory se používají tak, že každou část identifikátoru ohraničíte hranatými závorkami a pak je spojíte pomocí operátoru ! (vykřičník) nebo . (tečka). Například identifikátor pole s názvem Příjmení v tabulce nazvané Zaměstnanci je možné vyjádřit jako [Employees]![Last Name]. Operátor vykřičník říká Accessu, že následuje objekt, který patří ke kolekci před operátorem vykřičník. V tomto případě je [Příjmení] objekt pole, který patří ke kolekci [Zaměstnanci], která je sama objektem tabulky.
Abychom byli přesní, ne vždy je nutné psát kolem identifikátoru nebo částečného identifikátoru hranaté závorky. Pokud identifikátor neobsahuje žádné mezery ani jiné speciální znaky, přidá Access závorky automaticky při čtení výrazu. Je ale vhodné, abyste psali závorky sami – pomůže vám to vyhnout se chybám a funguje to také jako vizuální nápověda, že je určitá část výrazu identifikátor.
Funkce, operátory, konstanty a hodnoty
Pokud chcete vytvořit výraz, budete potřebovat víc než identifikátory – bude nutné provést nějakou akci. K provádění akcí ve výrazu slouží funkce, operátory a konstanty.
Funkce
Funkce je postup, který můžete použít ve výrazu. Některé funkce, jako je třeba Date, nevyžadují k tomu, aby fungovaly, žádný vstup. Většina funkcí ale vyžaduje vstupy, kterým se říká argumenty.
V příkladu na začátku tohoto článku používá funkce DatePart dva argumenty: argument interval (s hodnotou "yyyy") a argument datum (s hodnotou [Customers]![BirthDate]). Funkce DatePart vyžaduje minimálně tyto dva argumenty (interval a datum), ale může je mít až čtyři.
V následujícím seznamu vidíte některé funkce, které se běžně používají ve výrazech. Další informace o syntaxi, která se používá s danou funkcí, zobrazíte kliknutím na odkaz na příslušnou funkci.
-
Funkce Date se používá k vložení aktuálního systémového data do výrazu. Používá se běžně s funkcí Format a také s identifikátory polí, která obsahují data kalendářního data a času.
=Date()
-
Funkce DatePart se používá k určení nebo extrakci části kalendářního data – obvykle data získaného z identifikátoru pole, někdy se ale jedná o hodnotu data vrácenou jinou funkcí, jako je třeba Date.
DatePart ( "yyyy", Date())
-
Funkce DateDiff se používá k určení rozdílu mezi dvěma daty – obvykle mezi datem získaným z identifikátoru pole a datem získaným pomocí funkce Date.
=DateDiff(“d”, Now(), [Orders].[ReceiveBefore])-10
-
Funkce Format umožňuje použít formát u identifikátoru a u výsledků jiné funkce.
Format([Date],"ww")=Format(Now(),"ww")-1
-
Funkce IIf slouží k vyhodnocení výrazu jako pravdivého (True) nebo nepravdivého (False) a k následnému vrácení jedné určené hodnoty, pokud se výraz vyhodnotí jako pravdivý, a jiné určené hodnoty, pokud se vyhodnotí jako nepravdivý.
=IIf([CountryRegion]="Italy", "Italian", "Some other language")
-
Funkce InStr se používá k vyhledání pozice znaku nebo řetězce Řetězec v jiném řetězci. Hledaný řetězec se obvykle získá z identifikátoru pole.
InStr(1,[IPAddress],".")
-
Funkce Left, Mid a Right se používají k extrakci znaků z řetězce, a to od znaku úplně nalevo (Left), určité pozice uprostřed (Mid) nebo znaku úplně napravo (Right). Běžně se používají s funkcí InStr. Řetězec, ze kterého tyto funkce extrahují znaky, se obvykle získává z identifikátoru pole.
Left([ProductName], 1) Right([AssetCode], 2) Mid([Phone],2,3)
Seznam funkcí najdete v tématu popisujícím funkce (seřazené podle kategorie).
Operátory
Operátor je slovo nebo symbol označující určitý aritmetický nebo logický vztah mezi ostatními prvky výrazu. Operátory můžou být následující:
-
Aritmetické, například symbol Plus (+)
-
Relační, například symbol Rovná se (=)
-
Logické, například Not
-
Zřetězení, například &
-
Speciální, například Like
Operátory se nejčastěji používají k označení vztahu mezi dvěma identifikátory. Následující tabulky popisují operátory, které můžete použít v accessových výrazech.
Aritmetické
Aritmetické operátory slouží k výpočtu hodnoty ze dvou nebo více čísel nebo ke změně znaménka čísla z kladného na záporné.
Operátor |
Účel |
Příklad |
---|---|---|
+ |
Sečte dvě čísla. |
[Mezisoučet]+[DPH] |
- |
Vypočítá rozdíl mezi dvěma čísly nebo označí zápornou hodnotu čísla. |
[Cena]-[Sleva] |
* |
Vynásobí dvě čísla. |
[Množství]*[Cena] |
/ |
Vydělí první číslo druhým číslem. |
[Celkem]/[PočetPoložek] |
\ |
Zaokrouhlí obě čísla na celé číslo, potom vydělí první číslo druhým číslem a výsledek zobrazí jako celé číslo. |
[Přihlášeno]\[Pokoje] |
Mod |
Vydělí první číslo druhým číslem a vrátí jenom zbytek. |
[Přihlášeno] Mod [Pokoje] |
^ |
Vypočítá číslo umocněné na zadanou mocninu. |
Číslo ^ Mocnina |
Porovnání
Relační operátory slouží k porovnání hodnot a vrácení výsledku, který má hodnotu True, False nebo Null (neznámá hodnota).
Operátor |
Účel |
---|---|
< |
Určuje, jestli je první hodnota menší než druhá. |
<= |
Určuje, jestli je první hodnota menší nebo rovna druhé hodnotě. |
> |
Určuje, jestli je první hodnota větší než druhá. |
>= |
Určuje, jestli je první hodnota větší nebo rovna druhé hodnotě. |
= |
Určuje, jestli se první hodnota rovná druhé hodnotě. |
<> |
Určuje, jestli se první hodnota nerovná druhé hodnotě. |
Ve všech případech, pokud je první nebo druhá hodnota Null, bude mít hodnotu Null i výsledek. Protože hodnota Null představuje neznámou hodnotu, nebude známý ani žádný výsledek porovnání s hodnotou Null.
Logické
Logické operátory slouží ke kombinování dvou hodnot a vrací hodnoty True, False nebo Null. Logické operátory se označují taky jako Booleovské.
Operátor |
Použití |
Popis |
---|---|---|
And |
Výraz1 And Výraz2 |
Vrátí hodnotu True, pokud má Výraz1 i Výraz2 hodnotu True. |
Or |
Výraz1 Or Výraz2 |
Vrátí hodnotu True, pokud má Výraz1 nebo Výraz2 hodnotu True. |
Eqv |
Výraz1 Eqv Výraz2 |
Vrátí hodnotu True, pokud má Výraz1 i Výraz2 hodnotu True nebo pokud mají oba výrazy hodnotu False. |
Not |
Not Výraz |
Vrátí hodnotu True, pokud Výraz nemá hodnotu True. |
Xor |
Výraz1 Xor Výraz2 |
Vrátí hodnotu True, pokud má hodnotu True Výraz1 nebo Výraz2, ale ne oba výrazy. |
Zřetězení
Operátory zřetězení slouží ke sloučení dvou textových hodnot do jednoho řetězce.
Operátor |
Použití |
Popis |
---|---|---|
& |
řetězec_1 & řetězec_2 |
Sloučí dva řetězce do jednoho. |
+ |
řetězec_1 + řetězec_2 |
Sloučí dva řetězce do jednoho a zachovává při řetězení hodnoty null. |
Speciální
Použití speciálních operátorů je popsané v následující tabulce.
Operátor |
Popis |
Další informace |
---|---|---|
Is Null or Is Not Null |
Určuje, jestli je hodnota Null nebo Not Null. |
|
Like "pattern" |
Porovná řetězcové hodnoty pomocí zástupných znaků ? a *. |
|
Between val1 And val2 |
Určí, jestli se číselná hodnota nebo datum nachází v daném rozsahu. |
|
In(string1,string2...) |
Určuje, jestli je hodnota řetězce obsažená v sadě hodnot řetězců. |
Konstanty
Konstanta je známá hodnota, která se nemění a kterou můžete použít ve výrazu. V Accessu existují čtyři běžně používané konstanty:
-
True označuje něco, co je logicky pravda.
-
False označuje něco, co je logicky nepravda.
-
Null znamená, že není známá žádná hodnota.
-
"" (empty string) označuje hodnotu, o které se ví, že je prázdná.
Konstanty se dají použít jako argumenty u funkce a je možné je použít ve výrazu jako součást kritéria. Můžete například použít konstantu prázdného řetězce ("") jako část kritéria sloupce v dotazu pro vyhodnocení hodnot polí pro příslušný sloupec, a to zadáním následujících znaků jako kritéria: <>"". V tomto příkladu je <> operátor a "" konstanta. Při společném použití označují, že by se měl identifikátor, u kterého jsou použité, porovnat s prázdným řetězcem. Výraz se vyhodnotí jako pravdivý, když je hodnota identifikátoru cokoli jiného než prázdný řetězec.
Konstantu Null používejte obezřetně. Ve většině případů bude výsledkem použití konstanty Null ve spojení s operátorem chyba. Pokud chcete porovnat hodnotu s hodnotou Null ve výrazu, použijte operátor Is Null nebo Is Not Null.
Hodnoty
Ve výrazech můžete používat hodnoty literálu, třeba číslo 1 254 nebo řetězec „Zadejte číslo v rozmezí 1 až 10“. Můžete taky použít číselné hodnoty, což můžou být řady číslic včetně znaménka a desetinné čárky, pokud je to potřeba. Pokud znaménko chybí, předpokládá Access kladnou hodnotu. Pokud chcete, aby byla hodnota záporná, musí obsahovat znaménko mínus (-). Můžete použít taky exponenciální notaci. V takovém případě použijte písmeno E nebo e a znak exponentu (třeba 1,0E-6).
Když používáte textové řetězce, dejte je do uvozovek, aby je Access správně rozpoznal. Za některých okolností zadá Access uvozovky za vás. Když třeba zadáte text do výrazu pro ověřovací pravidlo nebo pro kritérium dotazu, doplní Access uvozovky kolem textu automaticky.
Pokud například napíšete Paris (Paříž), zobrazí Access ve výrazu "Paris". Pokud chcete, aby výraz vytvořil řetězec, který je ve skutečnosti ohraničený uvozovkami, můžete takový vnořený řetězec ohraničit jednoduchými uvozovkami (') nebo třemi sadami dvojitých uvozovek ("). Třeba tyto výrazy jsou ekvivalentní:
Forms![Contacts]![City]. DefaultValue = ' "Paris" '
Forms![Contacts]![City].DefaultValue = " " "Paris" " "
Pokud chcete použít hodnoty data a času, dejte kolem nich znaky křížku (#). Platné jsou například všechny tyto hodnoty data a času: #3-7-17#, #7-Bře-17# a #Bře-7-2017#. Když Access zjistí platnou hodnotu data a času uzavřenou mezi znaky #, automaticky s ní zachází jako s datovým typem Datum a čas.
Pro výraz ve webové databázi platí limit 65 vnoření
Výrazy s více než 65 úrovněmi vnoření nebudou v prohlížeči fungovat, proto takové výrazy ve webové databázi Accessu nepoužívejte. Při jejich použití se nezobrazí žádné chybové zprávy, pouze výraz nebude fungovat.
Pomocí operátorů &, AND a OR můžete na serveru vytvořit další úrovně vnoření, které se v klientovi Accessu neprojeví. Například výraz "a" & "b" & "c" není vnořený v Tvůrci výrazů, ale v SharePointu se stane concatenate.Db("a", concatenate.Db("b", "c") ). Tento překlad vytváří jednu úroveň vnoření. Použití mnoha po sobě jdoucích operátorů &, AND nebo OR v jednom výrazu může způsobit, že překročíte limit vnoření serveru (65). V tom okamžiku výraz v prohlížeči přestane fungovat.