Tento článek obsahuje mnoho příkladů výrazů v Access. 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. Výrazy v Access můžete použít k výpočtu hodnot, ověření dat a nastavení 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 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í funkce Left zobrazí první znak hodnoty pole nebo ovládacího prvku, který se nazývá NazevProduktu. |
=Right([AssetCode], 2) |
Pomocí funkce Right zobrazí poslední 2 znaky hodnoty pole nebo ovládacího prvku, který se nazývá KodAssetu. |
=Trim([Address]) |
Pomocí funkce Trim zobrazí hodnotu ovládacího prvku Adresa. 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ů 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. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
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. |
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 |
="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) 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 |
---|---|
=[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 (+, -, * 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]).
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 |
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.
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 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", [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 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([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
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([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. 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 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
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 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.
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 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 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 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 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. |
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 Or zobrazí objednávky expedované do jednoho z těchto dvou měst. |
ZemeOblastDodani |
In("Canada", "UK") |
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 N až Z. |
KodProduktu |
Right([ProductCode], 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. |
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([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...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([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
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 "*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í 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 |
"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) 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í 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 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 |
"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 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.
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. Pomocí výrazu definujete podmínku v bloku If:
[Counter]=10
Stejně jako u vlastnosti ValidationRule je výraz v bloku If podmíněný výraz. Musí se dát vyhodnotit na hodnotu 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. |