Tento článek obsahuje příklady výrazů v Accessu. Výraz kombinuje matematické nebo logické operátory, konstanty, funkce, pole tabulek, ovládací prvky a vlastnosti do jediné hodnoty. Pomocí výrazů v Accessu můžete počítat hodnoty, ověřovat data a nastavovat výchozí hodnoty.
V tomto článku
Formuláře a sestavy
Všechny výrazy formulářů a sestav
| Textové operace; Hodnoty v jiných ovládacích prvcích; Operace s daty | Záhlaví a zápatí; Počítání, součet a průměr hodnot; Podmínky pro pouze dvě hodnoty | Aritmetické operace; Agregační funkce SQL |
|---|
Dotazy a filtry
Všechny výrazy pro dotazy a filtry
Tabulky
| Výchozí hodnoty pole | Ověřovací pravidla pro pole |
|---|
Makra
Formuláře a sestavy
Tabulky v této části zobrazují výrazy, které počítají hodnotu v ovládacím prvku ve formuláři nebo sestavě. Pokud chcete vytvořit počítaný ovládací prvek, zadejte výraz do ControlSource vlastnosti ovládacího prvku, nikoli do pole tabulky nebo dotazu.
Poznámka
Výrazy můžete taky použít ve formulářích nebo sestavách, když zvýrazníte data 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, používají předdefinované funkce pro práci s textem a jinak vytvářejí 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 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([ProductName], 1) |
Pomocí Left funkce zobrazí první znak hodnoty pole nebo ovládacího prvku s názvem ProductName. |
=Right([AssetCode], 2) |
Pomocí Right této funkce zobrazí poslední dva znaky hodnoty v poli nebo ovládacím prvku s názvem AssetCode. |
=Trim([Address]) |
Pomocí Trim funkce zobrazí hodnotu Address ovládacího prvku po odebrání úvodních a koncových mezer. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Pomocí IIf funkce zobrazí hodnoty City ovládacích prvků and PostalCode , pokud má Region ovládací prvek hodnotu null. V opačném případě se zobrazí hodnoty ovládacích Cityprvků a RegionPostalCode oddělené mezerami. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
Pomocí operátoru + a šíření hodnoty null zobrazí hodnoty ovládacích prvků and CityPostalCode , pokud je hodnota v Region poli nebo ovládacím prvku null. V opačném případě zobrazí hodnoty Citypolí a RegionPostalCode ovládacích prvků oddělené mezerami. Šíření hodnoty null znamená, že pokud má kterákoli část výrazu hodnotu null, je null celý výraz. Operátor + podporuje šíření hodnoty null, ale & operátor ne. |
Záhlaví a zápatí
Pomocí vlastností and Pages můžete zobrazit nebo vytisknout čísla stránek ve formulářích Page nebo sestavách. Tyto vlastnosti jsou dostupné jenom při tisku nebo při náhledu, proto se nezobrazují v seznamu vlastností formuláře nebo sestavy. Obvykle umístíte textové pole do oddílu záhlaví nebo zápatí formuláře nebo sestavy a potom použijete výraz, jako jsou ty, které vidíte v následující tabulce.
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] |
Strana 1 |
="Page " & [Page] & " of " & [Pages] |
Strana 1 z 3 |
=[Page] & " of " & [Pages] & " Pages" |
1 z 3 stran |
=[Page] & "/" & [Pages] & " Pages" |
1/3 stran |
=[Country/region] & " - " & [Page] |
UK – 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Datum tisku: 31.12.2017 |
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) vrátí výraz =[RequiredDate] - 2 hodnotu data a času, která odpovídá dvěma dnům před aktuálními hodnotami v poli DodatDne.
| Výraz | Výsledek |
|---|---|
=[Subtotal]+[Freight] |
Součet hodnot v polích nebo ovládacích prvcích Mezisoucet a Prepravne. |
=[RequiredDate]-[ShippedDate] |
Interval mezi hodnotami kalendářních dat polí nebo ovládacích prvků DodatDne a DatumExpedice. |
=[Price]*1.06 |
Součin hodnoty pole nebo ovládacího prvku Cena a čísla 1,06 (přidá 6 procent k hodnotě Cena). |
=[Quantity]*[Price] |
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 (+, -, *, nebo /) a jeden z ovládacích prvků je null, výsledek celého výrazu je null. Tomu se říká šíření hodnoty null. Pokud může mít ovládací prvek hodnotu null, můžete se vyhnout šíření hodnoty null pomocí funkce Nz , která hodnotu null převede na nulu. Použijte =Nz([Subtotal])+Nz([Freight])například .
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![Orders]![OrderID] |
Hodnota ovládacího prvku IDObjednavky ve formuláři Objednavky. |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
Hodnota ovládacího prvku MezisoucetObjednavky v podformuláři s názvem Podformular objednavek, který se nachází ve formuláři Objednavky. |
=Forms![Orders]![Orders Subform]![ProductID].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![Orders]![Orders Subform]![Price] * 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![OrderID] |
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![Invoice]![OrderID] |
Hodnota ovládacího prvku s názvem IDObjednavky v sestavě nazvané Faktura. |
=Report![Summary]![Summary Subreport]![SalesTotal] |
Hodnota ovládacího prvku ProdejeCelkem v podsestavě nazvané Podsestava souhrnu, která je součástí sestavy Souhrn. |
=Parent![OrderID] |
Hodnota ovládacího prvku IDObjednavky v hlavní nebo nadřazené sestavě aktuální podsestavy. |
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 Prepravne v tabulce. |
=Count([OrderID]) |
Pomocí funkce Count zobrazí počet záznamů v ovládacím prvku IDObjednavky. |
=Sum([Sales]) |
Pomocí funkce Sum zobrazí součet hodnot ovládacího prvku Prodeje. |
=Sum([Quantity]*[Price]) |
Pomocí funkce Sum zobrazí součet součinů hodnot ovládacích prvků Mnozstvi a Cena. |
=[Sales]/Sum([Sales])*100 |
Zobrazuje procento prodeje vydělením hodnoty Sales ovládacího prvku součtem všech hodnot v Sales ovládacím prvku. Pokud nastavíte vlastnost Format ovládacího prvku na Percent, nezahrnujte *100 do výrazu. |
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.
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("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
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("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
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("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
Pomocí funkce DSum vrátí součet hodnot v poli CastkaObjednavky v tabulce Objednávky, kde IDZakaznika je RATTC. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
Pomocí funkce DCount vrátí počet hodnot Ano v poli Vyrazeno (pole s hodnotami Ano/Ne) v tabulce Assety. |
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 mm-dd-yy, kde mm je měsíc (1 až 12), dd den (1 až 31) a yy poslední dvě číslice roku (1980 až 2099). |
=Format(Now(), "ww") |
Pomocí funkce Format zobrazí číslo týdne v roce pro aktuální datum, kde ww představuje týdny 1 až 53. |
=DatePart("yyyy", [OrderDate]) |
Pomocí funkce DatePart zobrazí čtyřciferný rok hodnoty ovládacího prvku DatumObjednavky. |
=DateAdd("y", -10, [PromisedDate]) |
Pomocí funkce DateAdd zobrazí datum, které nastane 10 dní před hodnotou ovládacího prvku DatumDodani. |
=DateDiff("d", [OrderDate], [ShippedDate]) |
Pomocí funkce DateDiff zobrazí rozdíl (počet dní) mezi hodnotami ovládacích prvků DatumObjednani a DatumExpedice. |
=[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 DatumFakturace. |
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 True hodnotu 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([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
Pomocí funkce IIf (Immediate If) zobrazí zprávu "Objednávka potvrzena", pokud je Yeshodnota ovládacího prvku Potvrzena; v opačném případě zobrazí zprávu "Order Not Confirmed." |
=IIf(IsNull([Country/region]), " ", [Country]) |
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([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
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([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
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. |
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. Operátor můžete například použít Between k zadání počátečního a koncového data a k omezení výsledků dotazu na objednávky, které byly odeslány mezi těmito daty.
V následujících částech jsou uvedeny příklady výrazů pro použití v dotazech.
Textové operace v dotazech
Výrazy v následující tabulce používají operátory & and + ke kombinování textových řetězců, používají předdefinované 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 JmenoAPrijmeni, které zobrazí hodnoty v polích Jmeno a Prijmeni oddělené mezerou. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
Vytvoří pole s názvem Adresa2, které zobrazí hodnoty v polích Mesto, Oblast a PSC oddělené mezerami. |
ProductInitial: Left([ProductName], 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. |
TypeCode: Right([AssetCode], 2) |
Vytvoří pole KodTypu a použije funkci Right, pomocí které zobrazí poslední dva znaky hodnot v poli KodAssetu. |
AreaCode: Mid([Phone],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. |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/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. |
Aritmetické operace v dotazech
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 |
|---|---|
PrimeFreight: [Freight] * 1.1 |
Vytvoří pole s názvem ExpresniPrepravne a zobrazí v něm poplatky za přepravu zvýšené o 10 procent. |
OrderAmount: [Quantity] * [UnitPrice] |
Vytvoří pole s názvem CastkaObjednavky a zobrazí součin hodnot polí Mnozstvi a CenaZaJednotku. |
LeadTime: [RequiredDate] - [ShippedDate] |
Vytvoří pole s názvem Zpozdeni a zobrazí rozdíl mezi hodnotami v polích DodatDne a DatumExpedice. |
TotalStock: [UnitsInStock]+[UnitsOnOrder] |
Vytvoří pole s názvem CelkovaZasoba a zobrazí součet hodnot v polích JednotkyNaSklade a JednotkyVObjednavce. |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Vytvoří pole s názvem FreightPercentagea zobrazí procento poplatků za přepravu pro každý mezisoučet. Pomocí této funkce tento výraz Sum hodnoty v Freight poli sečte a potom tyto součty vydělí součtem hodnot v Subtotal poli. Pokud chcete tento výraz použít, převeďte výběrový dotaz na souhrnný dotaz. V návrhové mřížce je třeba použít řádek Souhrn a nastavit buňku Souhrn pro toto pole na Expression. Další informace o vytvoření souhrnného dotazu najdete v tématu Sčítání dat pomocí dotazu. Pokud nastavíte vlastnost Format pole na Percent, nezahrnujte *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.
Operace s daty v dotazech
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 Prodleva a pomocí funkce DateDiff zobrazí počet dní mezi datem objednávky a datem expedice. |
YearHired: DatePart("yyyy",[HireDate]) |
Vytvoří pole s názvem RokPrijeti a pomocí funkce DatePart zobrazí rok, ve kterém došlo k přijetí jednotlivých zaměstnanců. |
MinusThirty: Date( )- 30 |
Vytvoří pole s názvem MinusTricet a pomocí funkce Date zobrazí datum, které nastalo 30 dní před aktuálním datem. |
Agregační funkce jazyka SQL v dotazech
Výrazy v následující tabulce používají funkce SQL, které agregují nebo shrnují data. Často se používají funkce jako Sum, Counta Avg které se označují jako agregační funkce.
Kromě agregačních funkcí Access poskytuje také doménové agregační funkce, které umožňují selektivně sčítat nebo počítat hodnoty. Dá se tak spočítat třeba jenom hodnoty v určitém rozsahu nebo vyhledat hodnota z jiné tabulky. Mezi doménové agregační funkce patří DSum, DCount a DAvg.
K výpočtu součtů je často nutné vytvořit souhrnný dotaz. Pokud chcete například provést souhrn podle skupiny, použijte souhrnný dotaz. Pokud chcete povolit souhrnný dotaz v návrhové mřížce dotazu, vyberte v nabídce Zobrazit položku Součty.
| Výraz | Popis |
|---|---|
RowCount: 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). |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Vytvoří pole s názvem FreightPercentagea v každém mezisoučtu vypočítá procento poplatku za přepravu tak, že vydělí součet hodnot v Freight poli součtem hodnot v Subtotal poli. V tomto příkladu je použita Sum funkce. Tento výraz se musí použít se souhrnným dotazem. Pokud nastavíte vlastnost Format pole na Percent, nezahrnujte *100. Další informace o vytvoření souhrnného dotazu najdete v tématu Sčítání dat pomocí dotazu. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
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. |
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 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. |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
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. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
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. |
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 Kat a zobrazí NazevKategorie, pokud je IDKategorie z tabulky Kategorie stejné jako IDKategorie z tabulky Produkty. |
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 | "London" |
Zobrazí objednávky expedované do Prahy. |
| MestoDodani | "London" Or "Hedge End" |
Pomocí operátoru zobrazí objednávky expedované do Londýna Or nebo Hedge Endu. |
| ZemeOblastDodani | In("Canada", "UK") |
Pomocí operátoru In zobrazí objednávky expedované do České republiky nebo Velké Británie. |
| 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 N až Z. |
| KodProduktu | Right([ProductCode], 2)="99" |
Pomocí funkce Right zobrazí objednávky s hodnotami KodProduktu, které končí na 99. |
| JmenoAdresata | Like "S*" |
Zobrazí objednávky expedované zákazníkům, jejichž jméno začíná písmenem S. |
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 a funkcí DateAdd a Date zobrazí objednávky, Between...And 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([OrderDate])=2017 |
Pomocí funkce Year zobrazí objednávky s daty objednávek v roce 2017. |
| DatumObjednávky | DatePart("q", [OrderDate])=4 |
Pomocí funkce DatePart zobrazí objednávky ze čtvrtého kalendářního čtvrtletí. |
| DatumObjednávky | 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ů. |
| DatumObjednávky | 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. |
| DatumExpedice | Between #1/5/2017# And #1/10/2017# |
Pomocí operátoru Between...Andzobrazí objednávky odeslané nejdříve 5. ledna 2017 a nejpozději 10. ledna 2017. |
| DodatDne | Between Date( ) And DateAdd("M", 3, Date( )) |
Pomocí operátoru zobrazí objednávky, Between...And které se mají dodat mezi dnešním datem a třemi měsíci od dnešního data. |
| DatumNarozeni | Month([BirthDate])=Month(Date()) |
Pomocí funkcí Month a Date zobrazí zaměstnance, kteří mají tento měsíc narozeniny. |
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í). |
Porovnání vzorů v záznamech pomocí operátoru Like
Tento Like operátor poskytuje velkou míru flexibility, pokud se snažíte porovnat řádky, které odpovídají nějakému vzoru, protože můžete použít Like zástupné znaky a definovat vzory, které Access bude porovnávat. Zástupný znak (hvězdička) například * odpovídá sekvenci znaků libovolného typu a usnadňuje hledání všech jmen, která začínají určitým písmenem. Tento výraz Like "S*" můžete například použít k vyhledání všech jmen, 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 "*Imports" |
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. |
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("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
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("[Quantity]", "[Order Details]") |
Pomocí funkce DAvg zobrazí produkty objednané v množství, které přesahuje průměrné množství na objednávku. |
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 [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
Produkty, jejichž cena je shodná s cenou za sirup. |
| JednotkovaCena | >(SELECT AVG([UnitPrice]) FROM [Products]) |
Produkty, jejichž jednotková cena přesahuje průměr. |
| Mzda | > ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
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([UnitPrice] * [Quantity]) FROM [Order Details]) |
Objednávky se součty vyššími, než je průměrná hodnota objednávky. |
Aktualizační dotazy
Aktualizační dotaz slouží k úpravě dat v nejméně jednom existujícím poli databáze. Je tak možné nahrazovat hodnoty, nebo je úplně odstranit. Tato tabulka ukazuje některé způsoby použití výrazů v aktualizačních dotazech. Tyto výrazy použijte v řádku v návrhové Update To 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 | "Salesperson" |
Změní textovou hodnotu na Prodejce. |
| ZacatekProjektu | #8/10/17# |
Změní hodnotu kalendářního data na 10. srpna 2007. |
| Vyrazeno | Yes |
Změní hodnotu Ne v poli Ano/Ne na Ano. |
| CisloDilu | "PN" & [PartNumber] |
Přidá na začátek každého určeného čísla dílu text „ČD". |
| PolozkaRadkuCelkem | [UnitPrice] * [Quantity] |
Vypočítá součin hodnot JednotkovaCena a Mnozstvi. |
| Prepravne | [Freight] * 1.5 |
Zvýší cenu přepravy o 50 procent. |
| Prodeje | DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
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([ShipPostalCode], 5) |
Ořízne text z levé strany. Zůstane jenom pět znaků zprava. |
| JednotkovaCena | Nz([UnitPrice]) |
Změní v poli JednotkovaCena hodnotu null (nedefinovanou nebo neznámou) na nulu (0). |
Příkazy SQL
jazyk SQL (Structured Query Language) (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 chcete zobrazit příkaz SQL pro libovolný dotaz, vyberte Zobrazení SQL v nabídce Zobrazit . Následující tabulka ukazuje ukázky příkazů SQL, které používají výrazy.
| Příkaz SQL, který využívá výraz | Výsledek |
|---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
Zobrazí hodnoty polí Jmeno a Prijmeni pro zaměstnance, jehož příjmení je Novák. |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
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([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 RozsirenaCena přesahuje 1000, a zobrazí ho v poli s názvem Prumerna rozsirena cena. |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
Zobrazí v poli s názvem PocetIDProduktu celkový počet produktů v kategorii s více než 10 produkty. |
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 hodnotu použije, když se vytvoří nový záznam obsahující dané pole nebo když se vytvoří objekt, který obsahuje daný ovládací prvek. Výrazy v následující tabulce zobrazují ukázkové výchozí hodnoty pro pole nebo ovládací prvek. Pokud je ovládací prvek vázaný na pole 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 | "New York, N.Y." |
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 |
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 úpravou ValidationRule vlastnosti pole nebo ovládacího prvku. Měli byste zvážit i nastavení ValidationText vlastnosti, která uchovává text, který Access zobrazí v případě, že se ověřovací pravidlo poruší. Pokud vlastnost ValidationText nenastavíte, Access zobrazí výchozí chybovou zprávu.
Příklady v následující tabulce ukazují výrazy ověřovacích ValidationRule pravidel pro vlastnost a přidružený text pro ValidationText vlastnost.
| 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.
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. Výraz můžete použít k definování podmínky v bloku If:
[Counter]=10
Stejně jako u této ValidationRule vlastnosti je výraz v bloku If podmíněný výraz. Musí se vyřešit na buď, True nebo False. Akce se stane jenom v případě, že se podmínka vyhodnotí jako pravdivá.
| K provedení akce použijte tento výraz | Pokud |
|---|---|
[City]="Paris" |
Paříž je hodnota Mesto v poli formuláře, ze kterého se makro spustilo. |
DCount("[OrderID]", "Orders") > 35 |
V poli IDObjednavky tabulky Objednavky je více než 35 záznamů. |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 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. |
[ShippedDate] 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![Products]![UnitsInStock] < 5 |
Hodnota pole JednotkyNaSklade ve formuláři Produkty je menší než 5. |
IsNull([FirstName]) |
Hodnota Jmeno ve formuláři, ze kterého se makro spustilo, je null (nemá žádnou hodnotu). Tento výraz má ekvivalent: [Jmeno] Is Null. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 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. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>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("Confirm changes?",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. |