Příklady výrazů

V tomto článku najdete řadu 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).

=[FirstName] & " " & [LastName]

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

=Left([ProductName], 1)

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

=Right([AssetCode], 2)

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

=Trim([Address])

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

=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode])

Pomocí funkce IIf zobrazí hodnoty ovládacích prvků City (Město) a PostalCode (PSČ), pokud má ovládací prvek Region (Oblast) hodnotu null. Jinak zobrazí hodnoty ovládacích prvků City, Region a PostalCode oddělené mezerami.

=[City] & (" " + [Region]) & " " & [PostalCode]

Pomocí operátoru + a šíření hodnoty null zobrazí hodnoty ovládacích prvků City a PostalCode, pokud hodnota v poli nebo ovládacím prvku Region je null. Jinak zobrazí hodnoty polí nebo ovládacích prvků City, Region a PostalCode 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í Page (Stránka) a Pages (Stránky) zobrazíte nebo vytisknete čísla stránek formulářů nebo sestav. Tyto vlastnosti 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

="Page " & [Page]

Page 1

="Page " & [Page] & " of " & [Pages]

Page 1 of 3

=[Page] & " of " & [Pages] & " Pages"

1 of 3 Pages

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

1/3 Pages

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

UK - 1

=Format([Page], "000")

001

="Printed on: " & Date()

Printed on: 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 RequiredDate (Dodat dne). 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 RequiredDate.

Výraz

Výsledek

=[Subtotal]+[Freight]

Součet hodnot v polích nebo ovládacích prvcích Subtotal (Mezisoučet) a Freight (Přepravné).

=[RequiredDate]-[ShippedDate]

Interval mezi hodnotami kalendářních dat polí nebo ovládacích prvků RequiredDate (Dodat dne) a ShippedDate (Datum expedice).

=[Price]*1.06

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

=[Quantity]*[Price]

Součin hodnot polí nebo ovládacích prvků Quantity (Množství) a Price (Cena).

=[EmployeeTotal]/[CountryRegionTotal]

Podíl hodnot polí nebo ovládacích prvků EmployeeTotal (Zaměstnanci celkem) a CountryRegionTotal (Země/oblast celkem).

Poznámka:    Když ve výrazu použijete aritmetický operátor (+, -, * nebo /) 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 prvků 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![Orders]![OrderID]

Hodnota ovládacího prvku OrderID (ID objednávky) ve formuláři Orders (Objednávky).

=Forms![Orders]![Orders Subform].Form![OrderSubtotal]

Hodnota ovládacího prvku OrderSubtotal (Mezisoučet objednávky) v podformuláři s názvem Orders Subform (Podformulář objednávek), který je ve formuláři Orders (Objednávky).

=Forms![Orders]![Orders Subform]![ProductID].Column(2)

Hodnota třetího sloupce v ProductID (ID produktu), což je vícesloupcový seznam v podformuláři s názvem Orders Subform (Podformulář objednávek), který je ve formuláři Orders (Objednávky). (Poznámka: 0 odkazuje na první sloupec, 1 odkazuje na druhý sloupec atd.)

=Forms![Orders]![Orders Subform]![Price] * 1.06

Součin hodnoty ovládacího prvku Price (Cena) v podformuláři s názvem Orders Subform (Podformulář objednávek), který je ve formuláři Orders (Objednávky), a hodnoty 1,06 (přidá 6 procent k hodnotě ovládacího prvku Price).

=Parent![OrderID]

Hodnota ovládacího prvku OrderID (ID objednávky) v hlavním nebo nadřazeném formuláři aktuálního podformuláře.

Výrazy v následující tabulce ukazují několik možností, jak používat počítané ovládací prvky v sestavách. Výrazy odkazují na vlastnost Report (Sestava).

Výraz

Výsledek

=Report![Invoice]![OrderID]

Hodnota ovládacího prvku s názvem OrderID (ID objednávky) v sestavě nazvané Invoice (Faktura).

=Report![Summary]![Summary Subreport]![SalesTotal]

Hodnota ovládacího prvku SalesTotal (Prodej celkem) v podsestavě nazvané Summary Subreport (Podsestava souhrnu), která je součástí sestavy Summary (Souhrn).

=Parent![OrderID]

Hodnota ovládacího prvku OrderID (ID objednávky) 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([Freight])

Pomocí funkce Avg zobrazí průměr hodnot pole nebo ovládacího prvku Freight (Přepravné) v tabulce.

=Count([OrderID])

Pomocí funkce Count zobrazí počet záznamů v ovládacím prvku OrderID (ID objednávky).

=Sum([Sales])

Pomocí funkce Sum zobrazí součet hodnot ovládacího prvku Sales (Prodej).

=Sum([Quantity]*[Price])

Pomocí funkce Sum zobrazí součet součinů hodnot ovládacích prvků Quantity (Množství) a Price (Cena).

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

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

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, Zjištění počtu řádků v datovém listu 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ému se říká 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("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]"))

Pomocí funkce DLookup vrátí hodnotu pole ContactName (Jméno kontaktu) v tabulce Suppliers (Dodavatelé), kde hodnota pole SupplierID (ID dodavatele) v tabulce odpovídá hodnotě ovládacího prvku SupplierID (ID dodavatele) na formuláři Suppliers (Dodavatelé).

=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID])

Pomocí funkce DLookup vrátí hodnotu pole ContactName (Jméno kontaktu) v tabulce Suppliers (Dodavatelé), kde hodnota pole SupplierID (ID dodavatele) v tabulce odpovídá hodnotě ovládacího prvku SupplierID (ID dodavatele) na formuláři New Suppliers (Noví dodavatelé).

=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'")

Pomocí funkce DSum vrátí součet hodnot v poli OrderAmount (Částka objednávky) v tabulce Orders (Objednávky), kde CustomerID (ID zákazníka) je RATTC.

=DCount("[Retired]","[Assets]","[Retired]=Yes")

Pomocí funkce DCount vrátí počet hodnot Yes (Ano) v poli Retired (Vyřazeno) obsahující hodnoty Yes (Ano) a No (Ne) v tabulce Assets (Majetek).

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.

=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", [OrderDate])

Pomocí funkce DatePart zobrazí čtyřciferný rok hodnoty ovládacího prvku OrderDate (Datum objednávky).

=DateAdd("y", -10, [PromisedDate])

Pomocí funkce DateAdd zobrazí datum, které nastane 10 dní před hodnotou ovládacího prvku PromisedDate (Datum dodání).

=DateDiff("d", [OrderDate], [ShippedDate])

Pomocí funkce DateDiff zobrazí rozdíl (počet dní) mezi hodnotami ovládacích prvků OrderDate (Datum objednání) a ShippedDate (Datum expedice).

=[InvoiceDate] + 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 InvoiceDate (Datum fakturace).

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 (Pravda) nebo False (Nepravda). Druhým argumentem je hodnota, která se vrátí, pokud se výraz vyhodnotí jako pravdivý, a třetím argumentem je hodnota pro případ, že se výraz vyhodnotí jako nepravdivý.

Výraz

Popis

=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed")

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

=IIf(IsNull([Country/region]), " ", [Country])

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

=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode])

Pomocí funkcí IIf a IsNull zobrazí hodnoty ovládacích prvků City (Město) a PostalCode (PSČ), pokud hodnota v ovládacím prvku Region (Oblast) je null. Jinak zobrazí hodnoty polí nebo ovládacích prvků City, Region a PostalCode.

=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate])

Pomocí funkcí IIf a IsNull zobrazí zprávu „Check for a missing date“ (Zkontrolujte, jestli nechybí datum), pokud výsledek odečtení hodnoty ShippedDate (Datum expedice) od RequiredDate (Dodat dne) je null. Jinak zobrazí interval mezi hodnotami kalendářních dat ovládacích prvků RequiredDate a ShippedDate.

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

FullName: [FirstName] & " " & [LastName]

Vytvoří pole s názvem FullName (Jméno a příjmení), které zobrazí hodnoty v polích FirstName (Jméno) a LastName (Příjmení) oddělené mezerou.

Address2: [City] & " " & [Region] & " " & [PostalCode]

Vytvoří pole s názvem Address2 (Adresa 2), které zobrazí hodnoty v polích City (Město), Region (Oblast) a PostalCode (PSČ) oddělené mezerami.

ProductInitial: Left([ProductName], 1)

Vytvoří pole s názvem ProductInitial (Iniciála produktu) a použije funkci Left, pomocí které zobrazí v poli ProductInitial první znak hodnoty v poli ProductName (Název produktu).

TypeCode: Right([AssetCode], 2)

Vytvoří pole TypeCode (Kód typu) a použije funkci Right, pomocí které zobrazí poslední dva znaky hodnot v poli AssetCode (Kód majetku).

AreaCode: Mid([Phone],2,3)

Vytvoří pole s názvem AreaCode (Kód oblasti) a použije funkci Mid, pomocí které zobrazí tři znaky začínající druhým znakem hodnoty v poli Phone (Telefon).

ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100

Pojmenuje počítané pole ExtendedPrice (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 RequiredDate (Dodat dne). Výraz =[RequiredDate] - 2 vrátí hodnotu data a času, která odpovídá dvěma dnům před hodnotou v poli RequiredDate.

Výraz

Popis

PrimeFreight: [Freight] * 1.1

Vytvoří pole s názvem PrimeFreight (Expresní přepravné) a zobrazí v něm poplatky za přepravu (Freight) zvýšené o 10 procent.

OrderAmount: [Quantity] * [UnitPrice]

Vytvoří pole s názvem OrderAmount (Částka objednávky) a zobrazí součin hodnot polí Quantity (Množství) a UnitPrice (Cena za jednotku).

LeadTime: [RequiredDate] - [ShippedDate]

Vytvoří pole s názvem LeadTime (Zpoždění) a zobrazí rozdíl mezi hodnotami v polích RequiredDate (Dodat dne) a ShippedDate (Datum expedice).

TotalStock: [UnitsInStock]+[UnitsOnOrder]

Vytvoří pole s názvem TotalStock (Celková zásoba) a zobrazí součet hodnot v polích UnitsInStock (Jednotky na skladě) a UnitsOnOrder (Jednotky v objednávce).

FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100

Vytvoří pole s názvem FreightPercentage (Procento přepravného) a pro každý mezisoučet zobrazí procento poplatků za přepravu. Pomocí funkce Sum tento výraz sečte hodnoty v poli Freight (Přepravné). Pak součty vydělí součtem hodnot v poli Subtotal (Mezisoučet).

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, Zjištění počtu řádků v datovém listu 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

LagTime: DateDiff("d", [OrderDate], [ShippedDate])

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

YearHired: DatePart("yyyy",[HireDate])

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

MinusThirty: Date( )- 30

Vytvoří pole s názvem MinusThirty (Minus třicet) 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

RowCount: Count(*)

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

FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100

Vytvoří pole s názvem FreightPercentage (Procento přepravného) a v každém mezisoučtu spočítá procento poplatku za přepravu tak, že vydělí součet hodnot v poli Freight (Přepravné) součtem hodnot v poli Subtotal (Mezisoučet). (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.

AverageFreight: DAvg("[Freight]", "[Orders]")

Vytvoří pole s názvem AverageFreight (Průměrné přepravné) a pomocí funkce DAvg spočítá průměrné přepravné (Freight) ze všech objednávek (Orders) 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

CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion])

Vytvoří pole s názvem CurrentCountryRegion (Aktuální země/oblast) a pomocí funkcí IIf a IsNull zobrazí v tomto poli prázdný řetězec, pokud pole CountryRegion (Země/oblast) obsahuje hodnotu null. V opačném případě zobrazí obsah pole CountryRegion.

LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate])

Vytvoří pole s názvem LeadTime (Zpoždění) a pomocí funkcí IIf a IsNull zobrazí zprávu „Check for a missing date“ (Zkontrolujte, jestli nechybí datum), pokud je hodnota v poli RequiredDate (Dodat dne) nebo ShippedDate (Datum expedice) null. Jinak zobrazí rozdíl mezi těmito daty.

SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales])

Vytvoří pole s názvem SixMonthSales (Pololetní prodeje) a zobrazí součet hodnot v polích Qtr1Sales (Prodej za 1. čtvrtletí) a Qtr2Sales (Prodej za 2. čtvrtletí). 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

Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID])

Vytvoří pole s názvem Cat (Kategorie) a zobrazí název kategorie (CategoryName), pokud je CategoryID (ID kategorie) z tabulky Categories (Kategorie) stejné jako CategoryID z tabulky Products (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

ShipCity

"London"

Zobrazí objednávky expedované do Londýna.

ShipCity

"London" Or "Hedge End"

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

ShipCountryRegion

In("Canada", "UK")

Pomocí operátoru In zobrazí objednávky expedované do Kanady (Canada) nebo Spojeného království (UK).

ShipCountryRegion

Not "USA"

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

ProductName

Not Like "C*"

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

CompanyName

>="N"

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

ProductCode

Right([ProductCode], 2)="99"

Pomocí funkce Right zobrazí objednávky s hodnotami ProductCode (Kód produktu), které končí číslem 99.

ShipName

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 zadávání hodnot kalendářních dat a časů.

Pole

Výraz

Popis

ShippedDate

#2/2/2017#

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

ShippedDate

Date()

Zobrazí objednávky expedované dnes.

RequiredDate

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.

OrderDate

< Date( ) - 30

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

OrderDate

Year([OrderDate])=2017

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

OrderDate

DatePart("q", [OrderDate])=4

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

OrderDate

DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1

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

OrderDate

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

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

ShippedDate

Between #1/5/2017# And #1/10/2017#

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

RequiredDate

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.

BirthDate

Month([BirthDate])=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

ShipRegion

Is Null

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

ShipRegion

Is Not Null

Zobrazí objednávky pro zákazníky, jejichž pole ShipRegion (Oblast expedice) 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

ShipName

Like "S*"

Najde všechny záznamy v poli se jménem adresáta (ShipName), které začínají písmenem S.

ShipName

Like "*Imports"

Najde všechny záznamy v poli ShipName (Jméno adresáta), které končí slovem „Imports“ (Importy).

ShipName

Like "[A-D]*"

Najde všechny záznamy v poli ShipName (Jméno adresáta), které začínají písmeny A, B, C nebo D.

ShipName

Like "*ar*"

Najde všechny záznamy v poli ShipName (Jméno adresáta), které obsahují sekvenci písmen ar.

ShipName

Like "Maison Dewe?"

Najde všechny záznamy v poli ShipName (Jméno adresáta), 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í.

ShipName

Not Like "A*"

Najde všechny záznamy v poli ShipName (Jméno adresáta), které nezačínají písmenem A.

Začátek stránky

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

Doménové agregační funkce neboli funkce SQL 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

Freight

> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))

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

Quantity

> DAvg("[Quantity]", "[Order Details]")

Pomocí funkce DAvg zobrazí podrobnosti o objednávce (Order Details) s informacemi o produktech objednaných v množství (Quantity), 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í

UnitPrice

(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup")

Produkty (Products), jejichž cena (UnitPrice) je shodná s cenou za sirup (Aniseed Syrup)

UnitPrice

>(SELECT AVG([UnitPrice]) FROM [Products])

Produkty (Products), jejichž jednotková cena (UnitPrice) přesahuje průměr

Salary

> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*"))

Mzda (Salary) každého obchodního zástupce, jehož mzda je vyšší než mzda všech zaměstnanců (Employees) na pozici (Title), jejíž název obsahuje slova „Manager“ nebo „Vice President“

OrderTotal: [UnitPrice] * [Quantity]

> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details])

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

Title

"Salesperson"

Změní textovou hodnotu na Salesperson (Prodejce).

ProjectStart

#8/10/17#

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

Retired

Yes

Změní hodnotu No (Ne) v poli Yes/No (Ano/Ne) na Yes (Ano).

PartNumber

"PN" & [PartNumber]

Přidá na začátek každého určeného čísla dílu (PartNumber) text „PN".

LineItemTotal

[UnitPrice] * [Quantity]

Vypočítá součin hodnot UnitPrice (Jednotková cena) a Quantity (Množství).

Freight

[Freight] * 1.5

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

Prodeje

DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID])

Aktualizuje součty prodejů podle součinu hodnot Quantity (Množství) a UnitPrice (Jednotková cena) tam, kde hodnoty ProductID (ID produktu) v aktuální tabulce odpovídají hodnotám ProductID (ID produktu) v tabulce Order Details (Podrobnosti objednávky).

ShipPostalCode

Right([ShipPostalCode], 5)

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

UnitPrice

Nz([UnitPrice])

Změní v poli UnitPrice (Cena za jednotku) 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 [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio";

Zobrazí hodnoty polí FirstName (Jméno) a LastName (Příjmení) pro zaměstnance, jejichž příjmení je Danseglio.

SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID];

Zobrazí hodnoty polí ProductID (ID produktu) a ProductName (Název produktu) v tabulce Products (Produkty) pro záznamy, ve kterých hodnota CategoryID (ID kategorie) odpovídá hodnotě CategoryID (ID kategorie) zadané v otevřeném formuláři New Products (Nové produkty).

SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000;

Vypočítá průměr rozšířené ceny pro objednávky, u kterých hodnota v poli ExtendedPrice (Rozšířená cena) přesahuje 1000, a zobrazí ho v poli s názvem Average Extended Price (Průměrná rozšířená cena).

SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10;

Zobrazí v poli s názvem CountOfProductID (Počet ID produktů) 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 vázaný na pole v tabulce a toto pole má výchozí hodnotu, má přednost výchozí hodnota ovládacího prvku.

Pole

Výraz

Výchozí hodnota pole

Quantity

1

1

Region

"MT"

MT

Region

"New York, N.Y."

New York, N.Y. (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.

Order Date

Date( )

Dnešní datum

DueDate

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/2008#

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 může být žádoucí provést akci nebo posloupnost akcí v makru jenom v případě, že je splněná určitá podmínka. Předpokládejme třeba, že chcete spustit akci, jenom když se hodnota v textovém poli Counter (Počítadlo) rovná 10. Pro definici podmínky ve sloupci Podmínka daného makra použijete výraz:

[Counter]=10

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

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

K provedení akce použijte tento výraz

If

[City]="Paris"

Paris (Paříž) je hodnotou pole formuláře City (Město), ze kterého se makro spustilo.

DCount("[OrderID]", "Orders") > 35

V poli OrderID (ID objednávky) tabulky Orders (Objednávky) je více než 35 záznamů.

DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3

V tabulce Order Details (Podrobnosti objednávky) existují více než tři záznamy, pro které pole OrderID (ID objednávky) této tabulky odpovídá poli OrderID (ID objednávky) ve formuláři Orders (Objednávky).

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

Datum v poli ShippedDate (Datum expedice) 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![Products]![UnitsInStock] < 5

Hodnota pole UnitsInStock (Jednotky na skladě) ve formuláři Products (Produkty) je menší než 5.

IsNull([FirstName])

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

[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100

Hodnota v poli CountryRegion (Země/oblast) ve formuláři, ze kterého se makro spustilo, je UK a hodnota pole TotalOrds (Objednávky celkem) ve formuláři SalesTotals (Prodeje celkem) je větší než 100.

[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5

Hodnota pole CountryRegion (Země/oblast) ve formuláři, ze kterého se makro spustilo, je France, (Francie), Italy (Itálie) nebo Spain (Španělsko) a PostalCode (PSČ) není delší než 5 znaků.

MsgBox("Confirm changes?",1)=1

V dialogovém okně, které funkce MsgBox (Okno se zprávou) 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é znalosti a dovednosti
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.

×