Příklady výrazů

V tomto článku najdete mnoho příkladů výrazů v Accessu. Výraz je kombinace matematických nebo logických operátorů, konstant, funkcí, polí tabulek, ovládacích prvků a vlastností, jejichž výsledkem je jediná hodnota. Pomocí accessových výrazů můžete počítat hodnoty, ověřovat data nebo nastavovat výchozí hodnoty.

V tomto článku

Formuláře a sestavy

V tabulkách v této části najdete ukázky výrazů, které počítají hodnotu v ovládacím prvku umístěném do formuláře nebo sestavy. Počítaný ovládací prvek vytvoříte tak, že výraz namísto do pole tabulky nebo dotazu zadáte do vlastnosti ovládacího prvku Zdroj ovládacího prvku.

Poznámka    Výrazy můžete ve formulářích a sestavách použít také při zvýraznění dat pomocí podmíněného formátování.

Textové operace

Výrazy v následující tabulce používají operátory & (ampersand) a + (plus), pomocí kterých kombinují textové řetězce, a integrované funkce, kterými s textovými řetězci manipulují a provádějí další operace. Tím vzniká počítaný ovládací prvek.

Výraz

Výsledek

="N/A"

Zobrazí text „N/A“ (Není k dispozici).

=[Jmeno] & " " & [Prijmeni]

Zobrazí hodnoty uložené v polích tabulky s názvem Jmeno a Prijmeni. V tomto příkladu se operátor & používá ke zkombinování pole Jmeno, znaku mezery (uzavřeného do uvozovek) a pole Prijmeni.

=Left([NazevProduktu], 1)

Pomocí funkce Left zobrazí první znak hodnoty pole nebo ovládacího prvku, který se nazývá NazevProduktu.

=Right([KodAssetu], 2)

Pomocí funkce Right zobrazí poslední 2 znaky hodnoty pole nebo ovládacího prvku, který se nazývá KodAssetu.

=Trim([Adresa])

Pomocí funkce Trim zobrazí hodnotu ovládacího prvku Adresa. Ze začátku i konce hodnoty odstraní všechny mezery.

=IIf(IsNull([Oblast]);[Mesto] & " " & [PSC];[Mesto] & " " & [Oblast] & " " & [PSC])

Pomocí funkce IIf zobrazí hodnoty ovládacích prvků Mesto a PSC, pokud hodnota v ovládacím prvku Oblast je null. Jinak zobrazí hodnoty ovládacích prvků Mesto, Oblast a PSC oddělené mezerami.

=[Mesto] & (" " + [Oblast]) & " " & [PSC]

Pomocí operátoru + a šíření hodnoty null zobrazí hodnoty ovládacích prvků Mesto a PSC, pokud hodnota v poli nebo ovládacím prvku Oblast je null. Jinak zobrazí hodnoty polí nebo ovládacích prvků Mesto, Oblast a PSC oddělené mezerami.

Šíření hodnoty null znamená, že pokud má kterákoli součást výrazu hodnotu null, je null i celý výraz. Operátor + šíření hodnoty null podporuje, operátor & ne.

Začátek stránky

Záhlaví a zápatí

Pomocí vlastností Stránka a Stránky zobrazíte nebo vytisknete čísla stránek formulářů nebo sestav. Vlastnosti Stránka a Stránky jsou k dispozici jenom při tisku nebo při náhledu tisku, proto se nezobrazují v seznamu vlastností formuláře nebo sestavy. Obvykle tyto vlastnosti použijete tak, že do záhlaví nebo zápatí formuláře nebo sestavy vložíte textové pole a pak použijete výraz, třeba některý z následující tabulky.

Další informace o používání záhlaví a zápatí ve formulářích a sestavách najdete v článku Vložení čísel stránek do formuláře nebo sestavy.

Výraz

Výsledek

=[Page]

1

="Strana" & [Page]

Strana 1

="Strana " & [Page] & " z " & [Pages]

Strana 1 z 3

=[Page] & " z " & [Pages] & " stran"

1 z 3 stran

=[Page] & "/" & [Pages] & " stran"

1/3 stran

=[Country/region] & " – " & [Page]

UK – 1

=Format([Page], "000")

001

="Datum tisku: " & Date()

Datum tisku: 31.12.2017

Začátek stránky

Aritmetické operace

Pomocí výrazů můžete sčítat, odčítat, násobit a dělit hodnoty v jednom nebo více polích nebo ovládacích prvcích. Výrazy se dají použít i pro aritmetické operace nad kalendářními daty. Předpokládejme například, že máte pole tabulky typu datum a čas s názvem DodatDne. V poli (nebo v ovládacím prvku svázaném s polem) výraz =[RequiredDate] - 2 vrátí hodnotu data a času, která odpovídá dvěma dnům před aktuálními hodnotami v poli DodatDne.

Výraz

Výsledek

=[Mezisoucet]+[Prepravne]

Součet hodnot v polích nebo ovládacích prvcích Mezisoucet a Prepravne.

=[DodatDne]-[DatumExpedice]

Interval mezi hodnotami kalendářních dat polí nebo ovládacích prvků DodatDne a DatumExpedice.

=[Cena]*1,06

Součin hodnoty pole nebo ovládacího prvku Cena a čísla 1,06 (přidá 6 procent k hodnotě Cena).

=[Mnozstvi]*[Cena]

Součin hodnot polí nebo ovládacích prvků Mnozstvi a Cena.

=[EmployeeTotal]/[CountryRegionTotal]

Podíl hodnot polí nebo ovládacích prvků ZamestnanciCelkem a ZemeOblastCelkem.

Poznámka    Když ve výrazu použijete aritmetický operátor (+, -, * a /) a hodnota jednoho z ovládacích prvků ve výrazu je null, výsledek celého výrazu bude null. Tomu se říká šíření hodnoty null. Pokud kterýkoli záznam v jednom z ovládacích prvků, které používáte ve výrazu, může mít hodnotu null, můžete se šíření hodnoty null vyhnout tak, že hodnotu null převedete na nulu pomocí funkce Nz – třeba takto: =Nz([Subtotal])+Nz([Freight]).

Začátek stránky

Hodnoty v jiných ovládacích prvcích

Někdy potřebujete hodnotu, která existuje někde jinde, třeba v poli nebo ovládacím prvku v jiném formuláři nebo sestavě. Pomocí výrazu je možné vrátit hodnotu z jiného pole nebo ovládacího prvku.

V následující tabulce se uvádí příklady výrazů, které se dají použít v počítaných ovládacích prvcích ve formuláři.

Výraz

Výsledek

=Forms![Objednavky]![IDObjednavky]

Hodnota ovládacího prvku IDObjednavky ve formuláři Objednavky.

=Forms![Objednavky]![Podformular objednavek].Form![MezisoucetObjednavky]

Hodnota ovládacího prvku MezisoucetObjednavky v podformuláři s názvem Podformular objednavek, který se nachází ve formuláři Objednavky.

=Forms![Objednavky]![Podformular objednavek]![IDProduktu].Column(2)

Hodnota třetího sloupce v IDProduktu. IDProduktu je vícesloupcový seznam v podformuláři s názvem Podformular objednavek, který se nachází ve formuláři Objednavky. (Poznámka: 0 odkazuje na první sloupec, 1 odkazuje na druhý sloupec atd.)

=Forms![Objednavky]![Podformular objednavek]![Cena] * 1,06

Součin hodnoty ovládacího prvku Cena v podformuláři s názvem Podformular objednavek, který se nachází ve formuláři Objednavky, a hodnoty 1,06 (přidá 6 procent k hodnotě ovládacího prvku Cena).

=Parent![IDObjednavky]

Hodnota ovládacího prvku IDObjednavky v hlavním nebo nadřazeném formuláři aktuálního podformuláře.

Výrazy v následující tabulce ukazují pár způsobů, jak používat počítané ovládací prvky v sestavách. Výrazy se odkazují na vlastnost Report.

Výraz

Výsledek

=Report![Faktura]![IDObjednavky]

Hodnota ovládacího prvku s názvem IDObjednavky v sestavě nazvané Faktura.

=Report![Souhrn]![Podsestava souhrnu]![ProdejeCelkem]

Hodnota ovládacího prvku ProdejeCelkem v podsestavě nazvané Podsestava souhrnu, která je součástí sestavy Souhrn.

=Parent![IDObjednavky]

Hodnota ovládacího prvku IDObjednavky v hlavní nebo nadřazené sestavě aktuální podsestavy.

Začátek stránky

Počítání, součet a průměr hodnot

Pokud chcete spočítat hodnoty jednoho nebo více polí nebo ovládacích prvků, můžete použít typ funkcí, kterému se říká agregační funkce. Dá se třeba spočítat součet skupiny pro zápatí skupiny v sestavě nebo mezisoučet objednávky pro položky řádku ve formuláři. Také je možné spočítat počet položek v jednom nebo více polích nebo vypočítat průměrnou hodnotu.

Výrazy v následující tabulce představují několik způsobů, jak používat funkce, jako jsou třeba Avg, Count a Sum.

Výraz

Popis

=Avg([Prepravne])

Pomocí funkce Avg zobrazí průměr hodnot pole nebo ovládacího prvku Prepravne v tabulce.

=Count([IDObjednavky])

Pomocí funkce Count zobrazí počet záznamů v ovládacím prvku IDObjednavky.

=Sum([Prodeje])

Pomocí funkce Sum zobrazí součet hodnot ovládacího prvku Prodeje.

=Sum([Mnozstvi]*[Cena])

Pomocí funkce Sum zobrazí součet součinů hodnot ovládacích prvků Mnozstvi a Cena.

=[Prodeje]/Sum([Prodeje])*100

Zobrazí procento prodejů vypočítané tak, že se vydělí hodnota ovládacího prvku Prodeje součtem všech hodnot ovládacího prvku Prodeje.

Pokud nastavíte vlastnost Formát ovládacího prvku na Procenta, nepoužívejte ve výrazu *100.

Další informace o používání agregačních funkcí a součtech hodnot v polích a sloupcích najdete v článcích Sčítání dat pomocí dotazu, Zjištění počtu dat pomocí dotazu, Zobrazení součtů sloupců v datovém listu pomocí řádku souhrnů a Zobrazení součtů sloupců v datovém listu.

Začátek stránky

Agregační funkce SQL

Když potřebujete sečíst nebo spočítat hodnoty selektivně, můžete použít typ funkcí, kterým se říká agregační funkce SQL nebo doménové agregační funkce. Doména se skládá z jednoho nebo více polí v jedné nebo více tabulkách, případně z jednoho nebo více ovládacích prvků v jednom nebo více formulářích nebo sestavách. Můžete třeba srovnat hodnoty v poli tabulky s hodnotami v ovládacím prvku ve formuláři.

Výraz

Popis

=DLookup("[JmenoKontaktu]";"[Dodavatele]";"[IDDodavatele] = " & Forms("Dodavatele")("[IDDodavatele]"))

Pomocí funkce DLookup vrátí hodnotu pole JmenoKontaktu v tabulce Dodavatele, kde hodnota pole IDDodavatele v tabulce odpovídá hodnotě ovládacího prvku IDDodavatele na formuláři Dodavatele.

=DLookup("[JmenoKontaktu]";"[Dodavatele]";"[IDDodavatele] = " & Forms![Novi Dodavatele]![IDDodavatele])

Pomocí funkce DLookup vrátí hodnotu pole JmenoKontaktu v tabulce Dodavatele, kde hodnota pole IDDodavatele v tabulce odpovídá hodnotě ovládacího prvku IDDodavatele na formuláři Novi Dodavatele.

=DSum("[CastkaObjednavky]";"[Objednavky]";"[IDZakaznika] = 'RATTC'")

Pomocí funkce DSum vrátí součet hodnot v poli CastkaObjednavky v tabulce Objednávky, kde IDZakaznika je RATTC.

=DCount("[Vyrazeno]";"[Assety]";"[Vyrazeno]=Ano")

Pomocí funkce DCount vrátí počet hodnot Ano v poli Vyrazeno (pole s hodnotami Ano/Ne) v tabulce Assety.

Začátek stránky

Operace s daty

Sledování kalendářních dat a časů je základní aktivitou databáze. Můžete třeba vypočítat, kolik dní uplynulo od vystavení faktury, a zjistit tak stáří vaší pohledávky. Data a časy můžete formátovat různými způsoby. Ukazuje to následující tabulka.

Výraz

Popis

=Date()

Pomocí funkce Date zobrazí aktuální datum ve tvaru dd.mm.rrrr, kde dd je den (1 až 31), mm je měsíc (1 až 12) a rrrr rok (1980 až 2099).

=Format(Now();"ww")

Pomocí funkce Format zobrazí číslo týdne v roce pro aktuální datum. ww tady představuje týdny 1 až 53.

=DatePart("yyyy";[DatumObjednavky])

Pomocí funkce DatePart zobrazí čtyřciferný rok hodnoty ovládacího prvku DatumObjednavky.

=DateAdd("y"; -10;[DatumDodani])

Pomocí funkce DateAdd zobrazí datum, které nastane 10 dní před hodnotou ovládacího prvku DatumDodani.

=DateDiff("d";[DatumObjednani];[DatumExpedice])

Pomocí funkce DateDiff zobrazí rozdíl (počet dní) mezi hodnotami ovládacích prvků DatumObjednani a DatumExpedice.

=[DatumFakturace] + 30

Pomocí aritmetických operací nad kalendářními daty vypočítá datum, které nastane 30 dní po datu v poli nebo ovládacím prvku DatumFakturace.

Začátek stránky

Podmínky pro pouze dvě hodnoty

Ukázkové výrazy v následující tabulce používají funkci IIf, která vrací jednu ze dvou možných hodnot. Funkci IIf se předávají tři argumenty: Prvním argumentem je výraz, který musí vracet hodnotu True nebo False. Druhým argumentem je hodnota, která se vrátí, pokud se výraz vyhodnotí jako pravda, a třetím argumentem je hodnota pro případ, že se výraz vyhodnotí jako nepravda.

Výraz

Popis

=IIf([Potvrzeno] = "Ano";"Objednávka potvrzena";"Objednávka nepotvrzena")

Pomocí funkce IIf (Immediate If) zobrazí zprávu Objednávka potvrzena, pokud hodnota ovládacího prvku Potvrzeno je Ano, jinak zobrazí zprávu Objednávka nepotvrzena.

=IIf(IsNull([Zeme/oblast]);" ";[Zeme])

Pomocí funkcí IIf a IsNull zobrazí prázdný řetězec, pokud je hodnota ovládacího prvku Zeme/oblast null. V opačném případě zobrazí hodnotu ovládacího prvku Zeme/oblast.

=IIf(IsNull([Oblast]);[Mesto] & " " & [PSC];[Mesto] & " " & [Oblast] & " " & [PSC])

Pomocí funkcí IIf a IsNull zobrazí hodnoty ovládacích prvků Mesto a PSC, pokud hodnota v ovládacím prvku Oblast je null. Jinak zobrazí hodnoty polí nebo ovládacích prvků Mesto, Oblast a PSC.

=IIf(IsNull([DodatDne]) Or IsNull([DatumExpedice]);"Zkontrolujte, jestli nechybí datum";[DodatDne] - [DatumExpedice])

Pomocí funkcí IIf a IsNull zobrazí zprávu Zkontrolujte, jestli nechybí datum, pokud výsledek odečtení hodnoty DatumExpedice od DodatDne je null. Jinak zobrazí interval mezi hodnotami kalendářních dat ovládacích prvků DodatDne a DatumExpedice.

Začátek stránky

Dotazy a filtry

Tato část obsahuje ukázky výrazů, pomocí kterých můžete vytvářet počítaná pole v dotazu nebo zadávat dotazu kritéria. Počítané pole je sloupec v dotazu, který je výsledkem výrazu. Můžete třeba vypočítat hodnotu, zkombinovat textové hodnoty (třeba jméno a příjmení) nebo formátovat část kalendářního data.

Pomocí kritérií v dotazu omezujete záznamy, se kterými pracujete. Třeba pomocí operátoru Between můžete zadat počáteční a koncové datum a omezit výsledky dotazu na objednávky, které se expedovaly ve dnech mezi těmito daty.

V následující části jsou uvedeny příklady výrazů, které můžete v dotazech použít.

Textové operace

Výrazy v následující tabulce používají operátory & a +, pomocí kterých kombinují textové řetězce, integrované funkce, kterými s textovými řetězci manipulují, a jinak pracují s textem, aby vytvořily počítané pole.

Výraz

Popis

JmenoAPrijmeni: [Jmeno] & " " & [Prijmeni]

Vytvoří pole s názvem JmenoAPrijmeni, které zobrazí hodnoty v polích Jmeno a Prijmeni oddělené mezerou.

Adresa2: [Mesto] & " " & [Oblast] & " " & [PSC]

Vytvoří pole s názvem Adresa2, které zobrazí hodnoty v polích Mesto, Oblast a PSC oddělené mezerami.

InicialProduktu: Left([NázevProduktu];1)

Vytvoří pole s názvem InicialProduktu a použije funkci Left, pomocí které zobrazí v poli InicialProduktu první znak hodnoty v poli NázevProduktu.

KodTypu: Right([KodAssetu];2)

Vytvoří pole KodTypu a použije funkci Right, pomocí které zobrazí poslední dva znaky hodnot v poli KodAssetu.

KodOblasti: Mid([Telefon];2;3)

Vytvoří pole s názvem KodOblasti a použije funkci Mid, pomocí které zobrazí tři znaky začínající druhým znakem hodnoty v poli Telefon.

RozšířenáCena: CCur([Rozpis objednávek].[Cena za kus]*[Množství]*(1-[Sleva])/100)*100

Pojmenuje počítané pole RozšířenáCena a pomocí funkce CCur vypočítá konečný výsledek položek řádku se započítáním slevy.

Začátek stránky

Aritmetické operace

Pomocí výrazů můžete sčítat, odčítat, násobit a dělit hodnoty v jednom nebo více polích nebo ovládacích prvcích. Aritmetické operace se dají dělat i s kalendářními daty. Předpokládejme například, že máte pole typu datum a čas s názvem DodatDne. Výraz =[RequiredDate] - 2 vrátí hodnotu data a času, která odpovídá dvěma dnům před hodnotou v poli DodatDne.

Výraz

Popis

ExpresniPrepravne: [Prepravne] * 1,1

Vytvoří pole s názvem ExpresniPrepravne a zobrazí v něm poplatky za přepravu zvýšené o 10 procent.

CastkaObjednavky: [Mnozstvi] * [CenaZaJednotku]

Vytvoří pole s názvem CastkaObjednavky a zobrazí součin hodnot polí Mnozstvi a CenaZaJednotku.

Zpozdeni: [DodatDne] - [DatumExpedice]

Vytvoří pole s názvem Zpozdeni a zobrazí rozdíl mezi hodnotami v polích DodatDne a DatumExpedice.

CelkovaZasoba: [JednotkyNaSklade]+[JednotkyVObjednavce]

Vytvoří pole s názvem CelkovaZasoba a zobrazí součet hodnot v polích JednotkyNaSklade a JednotkyVObjednavce.

ProcentoPrepravneho: Sum([Prepravne])/Sum([Mezisoucet]) *100

Vytvoří pole s názvem ProcentoPrepravneho a pro každý mezisoučet zobrazí procento poplatků za přepravu. Pomocí funkce Sum tento výraz sečte hodnoty v poli Prepravne. Pak součty vydělí součtem hodnot v poli Mezisoucet.

Abyste mohli tento výraz použít, musíte si výběrový dotaz převést na souhrnný dotaz, protože v návrhové mřížce potřebujete použít řádek Souhrn. Zároveň musíte buňku Souhrn tohoto pole nastavit na Výraz.

Další informace o vytváření souhrnného dotazu najdete v článku o sčítání dat pomocí dotazu.

Pokud nastavíte vlastnost Formát pole na Procenta, nepoužívejte *100.

Další informace o používání agregačních funkcí a součtech hodnot v polích a sloupcích najdete v článcích Sčítání dat pomocí dotazu, Zjištění počtu dat pomocí dotazu, Zobrazení součtů sloupců v datovém listu pomocí řádku souhrnů a Zobrazení součtů sloupců v datovém listu.

Začátek stránky

Operace s daty

Skoro všechny databáze ukládají a sledují kalendářní data a časy. V Accessu se s daty a časy pracuje tak, že se nastavují pole datum a čas v tabulkách na datový typ Datum a čas. Access dokáže s daty dělat i aritmetické operace. Můžete třeba vypočítat, kolik dní uplynulo od vystavení faktury, a zjistit tak stáří vaší pohledávky.

Výraz

Popis

Prodleva: DateDiff("d";[DatumObjednani];[DatumExpedice])

Vytvoří pole s názvem Prodleva a pomocí funkce DateDiff zobrazí počet dní mezi datem objednávky a datem expedice.

RokPrijeti: DatePart("yyyy";[DatumPrijeti])

Vytvoří pole s názvem RokPrijeti a pomocí funkce DatePart zobrazí rok, ve kterém došlo k přijetí jednotlivých zaměstnanců.

MinusTricet: Date( )- 30

Vytvoří pole s názvem MinusTricet a pomocí funkce Date zobrazí datum, které nastalo 30 dní před aktuálním datem.

Začátek stránky

Agregační funkce SQL

Výrazy v následující tabulce používají funkce jazyka SQL (Structured Query Language), které agregují nebo shrnují data. Často se tyto funkce (mezi které patří třeba Sum, Count a Avg) označují jako agregační funkce.

Kromě agregačních funkcí Access poskytuje i doménové agregační funkce, které se používají ke sčítání nebo počítání hodnot selektivně. Dá se tak spočítat třeba jenom hodnoty v určitém rozsahu nebo vyhledat hodnota z jiné tabulky. Sada doménových agregačních funkcí zahrnuje funkci DSum, funkci DCount a funkci DAvg.

K výpočtu součtů budete často potřebovat vytvořit souhrnný dotaz. Souhrnný dotaz potřebujete použít třeba ke shrnutí podle skupiny. Pokud chcete povolit souhrnný dotaz v návrhové mřížce dotazu, klikněte na Součty v nabídce Zobrazení.

Výraz

Popis

PocetRadku: Count(*)

Vytvoří pole s názvem PocetRadku a pomocí funkce Count spočítá počet záznamů v dotazu, včetně záznamů s poli s hodnotou null (prázdná pole).

ProcentoPrepravneho: Sum([Prepravne])/Sum([Mezisoucet]) *100

Vytvoří pole s názvem ProcentoPrepravneho a v každém mezisoučtu spočítá procento poplatku za přepravu tak, že vydělí součet hodnot v poli Prepravne součtem hodnot v poli Mezisoucet. (V tomto příkladě se používá funkce Sum.)

Tento výraz se musí použít se souhrnným dotazem. Pokud nastavíte vlastnost Formát pole na Procenta, nepoužívejte *100.

Další informace o vytváření souhrnného dotazu najdete v článku o sčítání dat pomocí dotazu.

PrumernePrepravne: DAvg("[Prepravne]";"[Objednavky]")

Vytvoří pole s názvem PrumernePrepravne a pomocí funkce DAvg spočítá průměrné přepravné ze všech objednávek v kombinaci se souhrnným dotazem.

Začátek stránky

Pole s chybějícími daty

Výrazy, které najdete tady, pracují s poli, ve kterých můžou chybět informace. Takovými poli můžou být třeba ta, která obsahují hodnoty null (neznámé nebo nedefinované hodnoty). Na hodnoty null narazíte často. Může to být třeba neznámá cena nového produktu nebo hodnota, kterou spolupracovník zapomněl zapsat do objednávky. Schopnost najít a zpracovat hodnoty null může být kritickou součástí databázových operací. Výrazy v následující tabulce ukazují některé z běžných způsobů, jak hodnoty null zpracovat.

Výraz

Popis

AktualniZemeOblast: IIf(IsNull([ZemeOblast]);" ";[ZemeOblast])

Vytvoří pole s názvem AktualniZemeOblast a pomocí funkcí IIf a IsNull zobrazí v tomto poli prázdný řetězec, pokud pole ZemeOblast obsahuje hodnotu null. V opačném případě zobrazí obsah pole ZemeOblast.

Zpozdeni: IIf(IsNull([DodatDne] - [DatumExpedice]);"Zkontrolujte, jestli nechybí datum";[DodatDne] - [DatumExpedice])

Vytvoří pole s názvem Zpozdeni a pomocí funkcí IIf a IsNull zobrazí zprávu Zkontrolujte, jestli nechybí datum, pokud je hodnota v poli DodatDne nebo DatumExpedice null. Jinak zobrazí rozdíl mezi těmito daty.

PololetniProdeje: Nz([ProdejeQ1]) + Nz([ProdejeQ2])

Vytvoří pole s názvem PololetniProdeje a zobrazí součet hodnot v polích ProdejeQ1 a ProdejeQ2. Nejdřív ale použije funkci Nz, která převede hodnoty null na nuly.

Začátek stránky

Vytvoření počítaných polí pomocí poddotazů

K vytvoření počítaného pole můžete použít i vnořený dotaz, kterému se říká taky poddotaz. Výraz v následující tabulce je jedním příkladem počítaného pole, které je výsledkem poddotazu.

Výraz

Popis

Kat: (SELECT [NazevKategorie] FROM [Kategorie] WHERE [Produkty].[IDKategorie]=[Kategorie].[IDKategorie])

Vytvoří pole s názvem Kat a zobrazí NazevKategorie, pokud je IDKategorie z tabulky Kategorie stejné jako IDKategorie z tabulky Produkty.

Začátek stránky

Porovnání textových hodnot

Příklady výrazů v této tabulce ukazují kritéria, která porovnávají celé nebo částečné textové hodnoty.

Pole

Výraz

Popis

MestoDodani

"Praha"

Zobrazí objednávky expedované do Prahy.

MestoDodani

"Praha" Or "Ostrava"

Pomocí operátoru Or zobrazí objednávky expedované do jednoho z těchto dvou měst.

ZemeOblastDodani

In("Ceska republika";"Slovensko")

Pomocí operátoru In zobrazí objednávky expedované do České republiky nebo na Slovensko.

ZemeOblastDodani

Not "USA"

Pomocí operátoru Not zobrazí objednávky odeslané do zemí nebo oblastí jiných než USA.

NázevProduktu

Not Like "C*"

Pomocí operátoru Not a zástupného znaku * zobrazí produkty, jejichž název nezačíná písmenem C.

JmenoSpolecnosti

>="N"

Zobrazí objednávky expedované společnostem, jejichž jméno začíná písmeny NZ.

KodProduktu

Right([KodProduktu];2)="99"

Pomocí funkce Right zobrazí objednávky s hodnotami KodProduktu, které končí číslem 99.

JmenoAdresata

Like "S*"

Zobrazí objednávky expedované zákazníkům, jejichž jméno začíná písmenem S.

Začátek stránky

Kritéria pro porovnání dat

Výrazy v následující tabulce ukazují, jak ve výrazech pro kritéria používat kalendářní data a související funkce. Další informace o tom, jak zadávat a používat hodnoty kalendářních dat, najdete v článku o formátu pole pro datum a čas.

Pole

Výraz

Popis

DatumExpedice

#2.2.2017#

Zobrazí objednávky expedované 2. února 2017.

DatumExpedice

Date()

Zobrazí objednávky expedované dnes.

DodatDne

Between Date( ) And DateAdd("M";3;Date( ))

Pomocí operátoru Between...And a funkcí DateAdd a Date zobrazí objednávky, které se mají dodat mezi dnešním datem a třemi měsíci od dnešního data.

DatumObjednávky

< Date( ) - 30

Pomocí funkce Date zobrazí objednávky starší než 30 dní.

DatumObjednávky

Year([DatumObjednávky])=2017

Pomocí funkce Year zobrazí objednávky s daty objednávek v roce 2017.

DatumObjednávky

DatePart("q";[DatumObjednavky])=4

Pomocí funkce DatePart zobrazí objednávky ze čtvrtého kalendářního čtvrtletí.

DatumObjednávky

DateSerial(Year ([DatumObjednavky]); Month([DatumObjednavky])+1;1)-1

Pomocí funkcí DateSerial, Year a Month zobrazí objednávky z posledního dne každého z měsíců.

DatumObjednávky

Year([DatumObjednavky])= Year(Now()) And Month([DatumObjednavky])= Month(Now())

Pomocí funkcí Year a Month a operátoru And zobrazí objednávky v aktuálním roce a měsíci.

DatumExpedice

Between #5.1.2017# And #10.1.2017#

Pomocí operátoru Between...And zobrazí objednávky expedované nejdříve 5. ledna 2017 a nejpozději 10. ledna 2017.

DodatDne

Between Date( ) And DateAdd("M";3;Date( ))

Pomocí operátoru Between...And zobrazí objednávky, které se mají dodat mezi dnešním datem a třemi měsíci od dnešního data.

DatumNarozeni

Month([DatumNarozeni])=Month(Date())

Pomocí funkcí Month a Date zobrazí zaměstnance, kteří mají tento měsíc narozeniny.

Začátek stránky

Nalezení chybějících dat

Výrazy v následující tabulce pracují s poli, ve kterých můžou chybět informace – tedy s poli, které můžou obsahovat hodnotu null nebo řetězec s nulovou délkou. Hodnota null představuje chybějící informaci. Nepředstavuje nulu ani žádnou jinou hodnotu. Access tuto myšlenku chybějící informace podporuje, protože jde o koncept životně důležitý pro integritu databáze. V reálném světě informace chybí často, i když třeba jenom dočasně (například dosud neurčená cena nového produktu). Proto databáze, která modeluje entitu reálného světa, třeba podnik, musí umět zaznamenat informaci jako neuvedenou. Pomocí funkce IsNull můžete určit, jestli pole nebo ovládací prvek obsahuje hodnotu null. Pomocí funkce Nz pak můžete hodnotu null převést na nulu.

Pole

Výraz

Popis

OblastExpedice

Is Null

Zobrazí objednávky pro zákazníky, jejichž pole OblastExpedice je null (chybí).

OblastExpedice

Is Not Null

Zobrazí objednávky pro zákazníky, jejichž pole OblastExpedice obsahuje nějakou hodnotu.

Fax

""

Zobrazí objednávky zákazníků, kteří nemají fax. To se pozná podle hodnoty řetězce s nulovou délkou v poli Fax namísto hodnoty null (chybějící).

Začátek stránky

Porovnání vzorů v záznamech pomocí operátoru Like

Operátor Like nabízí velkou míru flexibility, pokud potřebujete porovnat řádky, které odpovídají nějakému vzoru. Like se totiž dá použít spolu se zástupnými znaky. Díky tomu můžete definovat vzory, které Access bude porovnávat. Třeba zástupný znak * (hvězdička) odpovídá sekvenci znaků jakéhokoli typu. Usnadňuje hledání všech jmen, které začínají určitým písmenem. Například pomocí výrazu Like "S*" můžete najít všechna jména, která začínají písmenem S. Další informace najdete v článku Operátor Like.

Pole

Výraz

Popis

JmenoAdresata

Like "S*"

Najde všechny záznamy v poli JmenoAdresata, které začínají písmenem S.

JmenoAdresata

Like "*Importy"

Najde všechny záznamy v poli JmenoAdresata, které končí slovem Importy.

JmenoAdresata

Like "[A-D]*"

Najde všechny záznamy v poli JmenoAdresata, které začínají písmeny A, B, C nebo D.

JmenoAdresata

Like "*ar*"

Najde všechny záznamy v poli JmenoAdresata, které obsahují sekvenci písmen ar.

ShipName

Like "Maison Dewe?"

Najde všechny záznamy v poli JmenoAdresata, které obsahují Maison (v první části hodnoty) a pětipísmenný řetězec, ve kterém první čtyři písmena jsou Dewe a poslední písmeno se neví.

JmenoAdresata

Not Like "A*"

Najde všechny záznamy v poli JmenoAdresata, které nezačínají písmenem A.

Začátek stránky

Porovnání řádků pomocí agregačních funkcí SQL

Agregační funkce SQL neboli doménové agregační funkce se používají v případě, že potřebujete selektivně sečíst, spočítat nebo zprůměrovat hodnoty. Můžete potřebovat spočítat třeba jenom ty hodnoty, které spadají do určitého rozsahu nebo které se vyhodnotí na Ano. Jindy zase může být potřeba vyhledat hodnotu z jiné tabulky, abyste ji mohli zobrazit. Ukázkové výrazy v následující tabulce používají doménové agregační funkce, pomocí kterých počítají sadu hodnot. Výsledek pak používají jako kritéria dotazu.

Pole

Výraz

Popis

Prepravne

> (DStDev("[Prepravne]";"Objednavky") + DAvg("[Prepravne]";"Objednavky"))

Pomocí funkcí DStDev a DAvg zobrazí všechny objednávky, u kterých cena za přepravu vzrostla nad průměr plus směrodatná odchylka nákladů na přepravu.

Mnozstvi

> DAvg("[Mnozstvi]";"[Podrobnosti objednavky]")

Pomocí funkce DAvg zobrazí produkty objednané v množství, které přesahuje průměrné množství na objednávku.

Začátek stránky

Porovnání polí pomocí poddotazů

Pomocí poddotazů, kterým se říká taky vnořené dotazy, se počítá hodnota, která se použije jako kritérium. Ukázkové výrazy v následující tabulce porovnávají řádky podle výsledků, které vrátil poddotaz.

Pole

Výraz

Zobrazí

JednotkovaCena

(SELECT [JednotkovaCena] FROM [Produkty] WHERE [NazevProduktu] = "Sirup")

Produkty, jejichž cena je shodná s cenou za sirup.

JednotkovaCena

>(SELECT AVG([JednotkovaCena]) FROM [Produkty])

Produkty, jejichž jednotková cena přesahuje průměr.

Mzda

> ALL (SELECT [Mzda] FROM [Zamestnanci] WHERE ([Pozice] LIKE "*Manager*") OR ([Pozice] LIKE "*Viceprezident*"))

Mzda každého obchodního zástupce, jehož mzda je vyšší než mzda všech zaměstnanců na pozici, jejíž název obsahuje slova Manager nebo Viceprezident.

UhrnObjednavky: [JednotkovaCena] * [Mnozstvi]

> (SELECT AVG([JednotkovaCena] * [Mnozstvi]) FROM [Podrobnosti objednavky])

Objednávky se součty vyššími, než je průměrná hodnota objednávky.

Začátek stránky

Aktualizační dotazy

Aktualizační dotazy se používají k úpravě dat v alespoň jednom existujícím poli databáze. Je tak možné nahrazovat hodnoty, nebo je úplně odstranit. Tato tabulka ukazuje některé ze způsobů, jak se výrazy používají v aktualizačních dotazech. Tyto výrazy se používají v řádku Aktualizovat do v návrhové mřížce dotazu pro pole, které chcete aktualizovat.

Další informace o vytváření aktualizační dotazů najdete v článku Vytvoření a spuštění aktualizačního dotazu.

Pole

Výraz

Výsledek

Pozice

"Prodejce"

Změní textovou hodnotu na Prodejce.

ZacatekProjektu

#10.8.17#

Změní hodnotu kalendářního data na 10. srpna 2007.

Vyrazeno

Ano

Změní hodnotu Ne v poli Ano/Ne na Ano.

CisloDilu

"ČD" & [CisloDilu]

Přidá na začátek každého určeného čísla dílu text „ČD".

PolozkaRadkuCelkem

[JednotkovaCena] * [Mnozstvi]

Vypočítá součin hodnot JednotkovaCena a Mnozstvi.

Prepravne

[Prepravne] * 1,5

Zvýší cenu přepravy o 50 procent.

Prodeje

DSum("[Mnozstvi] * [JednotkovaCena]";"Podrobnosti objednavky";"[IDProduktu]=" & [IDProduktu])

Aktualizuje součty prodejů podle součinu hodnot Mnozstvi a JednotkovaCena tam, kde hodnoty IDProduktu v aktuální tabulce odpovídají hodnotám IDProduktu v tabulce Podrobnosti objednavky.

PSCExpedice

Right([PSCExpedice];5)

Ořízne text z levé strany. Zůstane jenom pět znaků zprava.

JednotkovaCena

Nz([JednotkovaCena])

Změní v poli JednotkovaCena hodnotu null (nedefinovanou nebo neznámou) na nulu (0).

Začátek stránky

Příkazy SQL

Jazyk SQL (Structured Query Language) je dotazovací jazyk, který Access používá. Každý dotaz, který vytvoříte v návrhovém zobrazení dotazu, se dá vyjádřit i pomocí SQL. Pokud si chcete pro jakýkoli dotaz zobrazit příkaz SQL, klikněte v nabídce Zobrazení na Zobrazení SQL. V následující tabulce se uvádí příkazy SQL, které využívají výrazy.

Příkaz SQL, který využívá výraz

Výsledek

SELECT [Jmeno];[Prijmeni] FROM [Zamestnanci] WHERE [Prijmeni]="Novák"

Zobrazí hodnoty polí Jmeno a Prijmeni pro zaměstnance, jehož příjmení je Novák.

SELECT [IDProduktu];[NazevProduktu] FROM [Produkty] WHERE [IDKategorie]=Forms![Nove produkty]![IDKategorie];

Zobrazí hodnoty polí IDProduktu a NazevProduktu v tabulce Produkty pro záznamy, ve kterých hodnota IDKategorie odpovídá hodnotě IDKategorie zadané v otevřeném formuláři Nove produkty.

SELECT Avg([RozsirenaCena]) AS [Prumerna rozsirena cena] FROM [Rozsirene podrobnosti objednavky] WHERE [RozsirenaCena]>1000;

Vypočítá průměr rozšířené ceny pro objednávky, u kterých hodnota v poli RozsirenaCena přesahuje 1000, a zobrazí ho v poli s názvem Prumerna rozsirena cena.

SELECT [IDKategorie];Count([IDProduktu]) AS [PocetIDProduktu] FROM [Produkty] GROUP BY [IDKategorie] HAVING Count([IDProduktu])>10;

Zobrazí v poli s názvem PocetIDProduktu celkový počet produktů v kategorii s více než 10 produkty.

Začátek stránky

Výrazy tabulky

Dva nejčastější způsoby použití výrazů v tabulce představuje přiřazení výchozí hodnoty a vytvoření ověřovacího pravidla.

Výchozí hodnoty pole

Když navrhujete databázi, můžete chtít přiřadit poli nebo ovládacímu prvku nějakou výchozí hodnotu. Access pak tuto výchozí hodnotu použije, když se vytvoří nový záznam, který obsahuje dané pole, nebo když se vytvoří objekt, který obsahuje daný ovládací prvek. Výrazy v následující tabulce představují ukázkové výchozí hodnoty pro pole nebo ovládací prvek. Pokud je ovládací prvek svázaný s polem v tabulce a pole obsahuje výchozí hodnotu, výchozí hodnota ovládacího prvku má přednost.

Pole

Výraz

Výchozí hodnota pole

Mnozstvi

1

1

Oblast

"MT"

MT

Oblast

"Praha, 101 00"

Praha, 101 00 (Poznámka: Pokud hodnota obsahuje interpunkční znaménka, je nutné ji uzavřít do uvozovek.)

Fax

""

Řetězec s nulovou délkou, který znamená, že by toto pole mělo být standardně prázdné, ale neobsahovat hodnotu null.

Datum objednávky

Date( )

Dnešní datum

DatumSplatnosti

Date() + 60

Datum, které nastane za 60 od dnešního data

Začátek stránky

Ověřovací pravidla pro pole

Pomocí výrazu můžete vytvořit ověřovací pravidlo pro pole nebo ovládací prvek. Access pak toto pravidlo bude vynucovat, až se do pole nebo ovládacího prvku budou zadávat data. Ověřovací pravidlo vytvoříte tak, že upravíte vlastnost ValidationRule daného pole nebo ovládacího prvku. Měli byste zvážit i možnost nastavit vlastnost ValidationText, která uchovává text, který Access zobrazí v případě, že se ověřovací pravidlo poruší. Pokud vlastnost ValidationText nezadáte, Access zobrazí výchozí chybovou zprávu.

Příkazy v následující tabulce ukazují výrazy ověřovacích pravidel pro vlastnost ValidationRule a přidružený text pro vlastnost ValidationText.

Vlastnost ValidationRule

Vlastnost ValidationText

<> 0

Zadejte prosím nenulovou hodnotu.

0 Or > 100

Hodnota musí být buď 0, nebo větší než 100.

Like "K???"

Hodnota musí obsahovat 4 znaky a začínat písmenem K.

< #1/1/2017#

Zadejte datum před 1. 1. 2017.

>= #1/1/2017# And < #1/1/2018#

Zadané datum musí spadat do roku 2017.

Další informace o ověřování dat najdete v článku Vytvoření ověřovacího pravidla pro ověření dat v poli.

Začátek stránky

Výrazy maker

V některých případech je žádoucí provést akci nebo posloupnost akcí v makru jen tehdy, je-li splněna určitá podmínka. Předpokládejme například, že chcete provést akci makra jen v případě, že je hodnota v textovém poli vyšší nebo se rovná 10. Použijete výraz k definování sloupce Podmínka v makru:

[Counter]=10

Stejně jako v případě vlastnosti ValidationRule je výraz ve sloupci Podmínka podmínkou. Musí se dát vyhodnotit na hodnotu True nebo False. Akce se stane jenom v případě, že se podmínka vyhodnotí jako pravdivá.

Tip    Pokud chcete, aby Access tuto akci dočasně ignoroval, zadejte jako podmínku False. Může to být užitečné, když se snažíte v makru najít problémy.

K provedení akce použijte tento výraz

Pokud

[Mesto] = "Paříž"

Paříž je hodnota Mesto v poli formuláře, ze kterého se makro spustilo.

DCount("[IDObjednavky]", "Objednavky") > 35

V poli IDObjednavky tabulky Objednavky je více než 35 záznamů.

DCount("*", "[Podrobnosti objednavky]", "[IDObjednavky]=" & Forms![Objednavky]![IDObjednavky]) > 3

V tabulce Podrobnosti objednavky existují více než tři záznamy, pro které pole IDObjednavky této tabulky odpovídá poli IDObjednavky ve formuláři Objednavky.

[DatumExpedice] Between #2-Feb-2017# And #2-Mar-2017#

Datum v poli DatumExpedice ve formuláři, ze kterého se spustilo makro, nenastalo dříve než 2. února 2017 ani později než 2. března 2017.

Forms![Produkty]![JednotkyNaSklade] < 5

Hodnota pole JednotkyNaSklade ve formuláři Produkty je menší než 5.

IsNull([Jmeno])

Hodnota Jmeno ve formuláři, ze kterého se makro spustilo, je null (nemá žádnou hodnotu). Tento výraz má ekvivalent: [Jmeno] Is Null.

[ZemeOblast]="UK" And Forms![ProdejeCelkem]![ObjCelkem] > 100

Hodnota v poli ZemeOblast ve formuláři, ze kterého se makro spustilo, je UK a hodnota pole ObjCelkem ve formuláři ProdejeCelkem je větší než 100.

[ZemeOblast] In ("Francie";"Itálie";"Španělsko") And Len([PSC])<>5

Hodnota pole ZemeOblast ve formuláři, ze kterého se makro spustilo, je buď Francie, nebo Itálie, nebo Španělsko a PSC není delší než 5 znaků.

MsgBox("Potvrdit změny?";1)=1

V dialogovém okně, které funkce MsgBox zobrazila, kliknete na OK. Pokud v tomto dialogovém okně kliknete na Zrušit, bude Access akci ignorovat.

Začátek stránky

Viz taky

Článek o použití Tvůrce výrazů

Článek s úvodem k výrazům

Článek o tvorbě výrazů

Průvodce syntaxí výrazu

Rozšiřte své dovednosti s Office
Projít školení
Získejte nové funkce jako první
Připojte se k účastníkům programu Office Insiders

Byly tyto informace užitečné?

Děkujeme vám za zpětnou vazbu.

Děkujeme vám za váš názor. Vypadá to, že bude užitečné, když vás spojíme s některým z našich agentů z podpory Office.

×