Každý vzorec se skládá z názvu a vlastní definice vzorce. Oba dva údaje zadáte do prvních dvou polí v dialogovém okně Definice vzorce.
Nejdříve zadejte název vzorce, který může obsahovat pouze písmena (bez českých znaků), číslice a podtržítko. Název musí začínat písmenkem a doporučujeme zvolit jej výstižně tak, abyste i po delší době snadno odvodili, kvůli čemu byl vzorec vytvořen.
Vlastní definice vzorce se zadává do dalšího pole a může obsahovat jen určité výrazy, které jsou uvedeny níže.
Definice musí být ukončena středníkem.
Název vzorce může obsahovat pouze písmena bez diakritiky, číslice a podtržítko a musí začínat písmenem.
Protože vytváření a práce se vzorci je nejsilnější a nejsložitější nástroj aplikace REPORT Designer, uvádíme zde přehled jednotlivých částí dialogového okna Definice vzorce.
- Do pole Název zadejte název vzorce podle výše uvedených pravidel.
- Pole Definice vzorce obsahuje vlastní tvar vzorce, složený z výrazů a funkcí.
- Strom dostupných databázových polí. Obsahuje stejný výběr jako stromová struktura na záložce Pole.
- Seznam dostupných databázových polí.
- Seznam dostupných výrazů a funkcí, které je možné použít v definici vzorce.
- Popis datového typu vybraného databázového pole.
- Tlačítka pro vložení vybraného databázového pole nebo výrazu do definice vzorce. Tlačítka je možné použít, jen pokud je vybráno pole nebo výraz.
- Tlačítko Test slouží k otestování syntaxe zápisu definice vzorce.
Definice vzorce může obsahovat pouze určené výrazy a vždy musí být ukončena středníkem.
Výrazy, které je možné použít, a příklady jejich použití jsou zde nyní uvedeny.
Přímé hodnoty
- Celé číslo – jedná se o číslo bez desetinných míst.
Příklad: 40 nebo -156
- Reálné číslo – jedná se o číslo včetně desetinných míst, oddělených čárkou.
Příklad: 68‚12 nebo -169‚35
- Textová konstanta – jedná se o text, který musí být uzavřen v uvozovkách. V seznamu pod polem Definice vzorce je výraz uveden takto: “text“
Příklad: ?Ahoj? nebo ??
- Konstanta NULL – jedná se o hodnotu, která je neznámá. Pozor, hodnota NULL se liší od nuly nebo prázdného textu (mezer).
Příklad: NULL
- Komentář – jedná se o komentář ke vzorci uzavřený mezi dvěma lomítky s hvězdičkami. Komentář slouží pouze k tomu, aby bylo možné do vzorce uvést poznámky, které nemají vliv na funkci vzorce. V seznamu pod polem Definice vzorce je jeho definice uvedena takto: /* komentář */
Příklad: /* Toto je komentář ke vzorci */
Základní matematické funkce
Použití některých výrazů blíže osvětlí příklady uvedené v kapitole Přílohy.
Tyto funkce je možné použít pouze tehdy, pokud obě strany funkce jsou čísla. Výjimku tvoří pouze typ Text, který je možné sčítat – skládat dva texty za sebe dohromady do jednoho řetězce. Druhou výjimku tvoří typ Datum, ke kterému lze přičítat/odečítat počet celých dní a navíc lze odečítat dvě pole typu Datum od sebe. Výsledkem je rozdíl v počtu dní.
- Součet dvou výrazů – jedná se o znaménko plus. V seznamu pod polem Definice vzorce je výraz uveden takto: a + b
Chcete-li v definici vzorce spojit dva texty nebo text a pole, je možné to provést prostřednictvím znaménka plus.
Příklad: 1 + 1 nebo “Ah“ + “oj“ (výsledkem je text “Ahoj“)
- Rozdíl dvou výrazů – jedná se o znaménko minus. V seznamu pod polem Definice vzorce je výraz uveden takto: a - b
Příklad: 2 - 1
- Součin dvou výrazů – jedná se o znaménko krát. V seznamu pod polem Definice vzorce je výraz uveden takto: a * b
Příklad: 3 * 2
- Podíl dvou výrazů – jedná se o znaménko lomeno. V seznamu pod polem Definice vzorce je výraz uveden takto: a / b
Příklad: 4 / 3
Základní porovnávací funkce
- Logický výraz rovnost – jedná se o znaménko rovná se. V seznamu pod polem Definice vzorce je výraz uveden takto: ==
Pozor: Do vzorce je nutné vkládat vždy dvě znaménka rovná se.
Příklad: “Vlevo“ == “Vlevo“
- Logický výraz nerovnost – jedná se o znaménko nerovná se. V seznamu pod polem Definice vzorce je výraz uveden takto: <>
Příklad: “Vlevo“ <> “Vpravo“
- Logický výraz je menší než – jedná se o znaménko menší. V seznamu pod polem Definice vzorce je výraz uveden takto: <
Příklad: <:qSKz.Ks:> < 8
- Logický výraz je menší nebo se rovná – jedná se o znaménko menší nebo rovno. V seznamu pod polem Definice vzorce je výraz uveden takto: <=
Příklad: <:qSKz.Ks:> <= 8
- Logický výraz je větší než – jedná se o znaménko větší. V seznamu pod polem Definice vzorce je výraz uveden takto: >
Příklad: <:qSKz.Ks:> > 8
- Logický výraz je větší nebo se rovná – jedná se o znaménko větší nebo rovno. V seznamu pod polem Definice vzorce je výraz uveden takto: >=
Příklad: <:qSKz.Ks:> >= 8
Základní logické funkce
- Negace logického výrazu – jedná se o opak výrazu uvedeného za znaménkem vykřičník. V seznamu pod polem Definice vzorce je výraz uveden takto: ! (negace)
Příklad: !(“Vlevo“ <> “Vpravo“)
- Logický součin – jedná se o logický operátor několika logických výrazů. Výsledkem je pravda, pokud jsou všechny výrazy platné (pravdivé). V seznamu pod polem Definice vzorce je výraz uveden takto: & (log.součin)
Příklad: (<:qSKz.Ks:> >= 1) & (<:qSKz.Ks:> <= 5)
(Výsledkem je pravda, pokud je hodnota proměnné qSKz.Ks větší nebo rovna 1 a zároveň menší nebo rovna 5).
- Logický součet – jedná se o logický operátor několika logických výrazů. Výsledkem je pravda, pokud je alespoň jeden logický výraz platný (pravdivý). V seznamu pod polem Definice vzorce je výraz uveden takto: | (log.součet)
Použití některých výrazů blíže osvětlí příklady uvedené v kapitole Přílohy.
Příklad: (<:qSKz.Ks:> <= 3) | (<:qSKz.Ks:> >= 5)
Speciální výrazy
- Závorky – jedná se o znaménka klasických kulatých závorek. V seznamu pod polem Definice vzorce je výraz uveden takto: (závorky)
Příklad: (8 + 4) / 2
- Podmíněný výraz – jedná se o klasickou podmínku jestliže – pak – jinak (jestliže platí výraz A, pak udělej B, jinak udělej C), která slouží k vyhodnocení údajů. Především v první části podmíněného výrazu mohou být výborně využity logické součiny a součty. V seznamu pod polem Definice vzorce je výraz uveden takto: if a then b else c
Příklad: if (<:qSKz.Ks:> >= 5) then “Ano“ else “Ne“
Peněžní funkce
Funkce je možné aplikovat pouze na výrazy, které obsahují číslo.
- Slovy – funkce vrací slovní vyjádření peněžní částky (celé části čísla). V seznamu pod polem Definice vzorce je funkce uvedena takto: Slovy (částka)
Příklad: Slovy (45‚60)
Výsledek: text “Čtyřicetpět“
- Koruny – funkce vrací číslo zaokrouhlené na jednotky dolů. V seznamu pod polem Definice vzorce je funkce uvedena takto: Koruny (částka)
Příklad: Koruny (45‚60)
Výsledek: číslo 45
- Haléře – funkce vrací text, který obsahuje první dvě desetinná místa peněžní částky (reálného čísla). V seznamu pod polem Definice vzorce je funkce uvedena takto: Halere (částka)
Příklad: Halere (45‚60)
Výsledek: text “60“
- Zaokrouhli – funkce vrací číslo zaokrouhlené na zadaný počet desetinných míst, maximálně 4. V seznamu pod polem Definice vzorce je funkce uvedena takto: Round (číslo, míst)
Příklad: Round (45‚60689, 2)
Výsledek: text “45.61“
- Abs – funkce vrátí absolutní hodnotu čísla. Definice funkce je Abs (číslo).
Příklad: Abs (-1‚25)
Výsledek: číslo 1‚25
- EuroDualCastka – tato funkce vrací uživateli přepočítanou částku, kterou zadal jako parametr. Částka je přepočtena kurzem z globálního nastavení v programu POHODA. Částka je zaokrouhlena na počet desetinných míst a přepočet je prováděn do měny, na základě data účetní jednotky.
Příklad: EuroDualCastka (<:FA.KcCelkem:>)
Výsledek: přepočítá se celková částka faktury pro duální zobrazení
Datumové funkce
Funkce je možné aplikovat pouze na výrazy obsahující datum. V příkladech uvedených u jednotlivých funkcí budeme používat pole <:FA.Datum:>, které bude obsahovat datum 30. 7. 2004.
- Číslo dne v týdnu – funkce vrací pořadové číslo dne v týdnu z příslušného data. Čísla vyjadřují následující dny: 1 – pondělí, 2 – úterý, 3 – středa, 4 – čtvrtek, 5 – pátek, 6 – sobota, 7 – neděle. V seznamu pod polem Definice vzorce je funkce uvedena takto: DenVTydnu (datum)
Příklad: DenVTydnu (<:FA.Datum:>)
Výsledek: 5 (pátek)
- Den – funkce vrací den z příslušného data. V seznamu pod polem Definice vzorce je funkce uvedena takto: Day (datum)
Příklad: Day (<:FA.Datum:>)
Výsledek: číslo 30
- Číslo měsíce – funkce vrací pořadové číslo měsíce z příslušného data. V seznamu pod polem Definice vzorce je funkce uvedena takto: Month (datum)
Příklad: Month (<:FA.Datum:>)
Výsledek: číslo 7
- Letopočet – funkce vrací letopočet z příslušného data. V seznamu pod polem Definice vzorce je funkce uvedena takto: Year (datum)
Příklad: Year (<:FA.Datum:>)
Výsledek: číslo 2004
- Vytvoř datum – funkce vytvoří ze zadaných čísel datum. Čísla mohou být zadána jako celá nebo reálná. Desetinná reálná čísla jsou zaokrouhlena na jednotky dolů. V případě, že je některý ze zadaných parametrů funkce nečíselný, funkce vrací výsledek NULL. V seznamu pod polem Definice vzorce je funkce uvedena takto: Date (rok, měsíc, den).
Příklad: Date (2004‚07‚30)
Výsledek: typ datum o hodnotě 30. 7. 2004
- EuroDualJeObdobi – funkce načte z globálního nastavení programu POHODA v sekci Přechod na euro datum Od–Do pro duální zobrazování. Pokud datum spadá do tohoto období, funkce vrací hodnotu 1, jinak vrací hodnotu 0. Touto metodou se podmiňují většinou sekce, které jsou běžně skryté, a v případě, že datum uvedené jako parametr funkce do období spadá, sekce se zobrazí.
Příklad: EuroDualJeObdobi (<:FA.Datum:>)
Výsledek: jedná se o datum vydání, resp. vystavení dokladu u faktur
Textové funkce
Tyto funkce je možné aplikovat pouze na výrazy, které obsahují text. V případě, že zadaný výraz není textový, vrací funkce hodnotu NULL.
- Find – funkce vrací index prvního výskytu zadané hodnoty, který začíná od nuly. Pokud se zadaná hodnota v textu nevyskytuje, vrací funkce hodnotu -1 (nepravda). V seznamu pod polem Definice vzorce je funkce uvedena takto: Find (text, text).
Příklad: Find(“Programujeme“, “gram“)
Výsledek: 3.
- Len – funkce vrací délku zadaného textu jako celé číslo. V seznamu pod polem Definice vzorce je funkce uvedena takto: Len (text).
Příklad: Len(“Auto“)
Výsledek: 4
- Mid – funkce vrací zbytek textu od zadaného indexu, resp. vrací část textu zadané délky od zadaného indexu. Index je počítán od nuly. V seznamu pod polem Definice vzorce je funkce uvedena takto: Mid (text, od), resp. Mid (text, od, délka).
Příklad: Mid(“Program“‚3), resp. Mid(“Program“‚3‚2)
- ToLower – funkce vrací řetězec převedený na malé znaky.
- ToNumber – funkce převede text na číslo. V případě, že není možné zadaný text převést na číslo, vrací funkce hodnotu NULL. V seznamu pod polem Definice vzorce je funkce uvedena takto: ToNumber (text).
Příklad: ToNumber(“13‚25“)
Výsledek: reálné číslo 13‚25
- ToUpper- funkce vrátí řetězec ve velkých znacích podle znakové sady. Pokud nelze znak převést na velký, je vrácen v nezměněné podobě.
- Trim – funkce odstraní mezery na začátku a konci řetězce.
- Ucet – funkce provede převod čísla bankovního účtu na text, který má šestnáct znaků. Přitom vypouští pomlčky a obě části čísla účtu (předčíslí tvořené šesti znaky a vlastní číslo účtu tvořené deseti znaky), případně doplní zleva nulami, aby byl dodržen celkový počet šestnácti znaků. V seznamu pod polem Definice vzorce je funkce uvedena takto: Ucet (text).
Funkci Účet je vhodné použít pro vypsání čísla účtu do okének formuláře.
Příklad: Ucet(“19–4563258741“)
Výsledek: text “0000194563258741“
Součtové funkce
Použití součtové funkce ve vzorci je stejné jako použití součtového pole.
Funkce je možné aplikovat pouze na objekty typu pole, tj. na databázová pole, proměnné a vzorce.
- Count – funkce vrací počet neprázdných hodnot zadaných ve vybraném poli. V seznamu pod polem Definice je funkce uvedena takto: Count (<:pole:>)
Součtové funkce Počet různých porovnává hodnotu vždy s hodnotou předchozí, proto pro její správnou činnost musí být hodnoty pole správně setříděny již z programu POHODA.
Příklad: Count(<:FA.Datum:>)
Výsledek: zobrazí počet faktur, které nemají pole Datum prázdné
- DistCount – funkce vrací počet různých hodnot zadaných ve vybraném poli. V seznamu pod polem Definice je funkce uvedena takto: DistCount (<:pole:>)
Příklad: DisCount(<:FA.Datum:>)
Výsledek: vrací počet faktur, které nemají pole datum prázdné a u nichž se hodnoty v poli Datum liší
- Min – funkce vrací minimální hodnotu z hodnot zadaných ve vybraném poli. V seznamu pod polem Definice je funkce uvedena takto: Min (<:pole:>)
Příklad: Min (<:FA.Datum:>)
Výsledek: nejmenší datum, které je uvedeno v daných fakturách
- Max – funkce vrací maximální hodnotu z hodnot zadaných ve vybraném poli. V seznamu pod polem Definice je funkce uvedena takto: Max (<:pole:>)
Příklad: Max (<:FA.Datum:>)
Výsledek: největší datum, které je uvedeno v daných fakturách
- Sum – funkce vrací součet všech hodnot zadaných ve vybraném poli a je možné ji aplikovat pouze na pole, která obsahují číselný údaj. V seznamu pod polem Definice je funkce uvedena takto: Sum (<:pole:>)
Spíše než součtový vzorec doporučujeme využít Součtové pole, neboť jeho použití je pro uživatele snazší.
Příklad: Sum (<:FA.Kc:>)
Výsledek: součet všech částek bez DPH u položek faktury
Pokud ve vzorci použijete některou ze součtových funkcí, vytvoříte tzv. součtový vzorec, který je velmi podobný součtovému poli, o kterém pojednává záložka Součet. Součtové pole doporučujeme ve většině případů využít spíše než součtový vzorec, neboť jeho použití je pro uživatele snazší.
Oproti klasickému vzorci je v součtovém vzorci navíc na záložce Vzorec výklopný seznam Nulovat v sekci, v němž je možné nastavit, ve které sekci se má nulovat výsledek funkce. Tím například určíte, zda součet má být kumulován od začátku tiskové sestavy, nebo se mají hodnoty sčítat za každou stranu zvlášť.
U součtového vzorce je stejně jako u součtového pole možné nastavit nulování funkce v zadané sekci.
Výklopný seznam Nulovat v sekci se neobjeví ihned po zadání součtové funkce do definice vzorce, ale po stisku tlačítka Test nebo OK. Tehdy program provede test, zda zadaný vzorec obsahuje součtovou funkci a v případě, že se jedná o součtový vzorec, zobrazí výklopný seznam Nulovat v sekci.
Výklopný seznam je přístupný pouze tehdy, pokud je vzorec umístěn v sekci Položka. V ostatních případech je seznam zašedlý a není možné nulovací sekci zvolit ručně. Program automaticky nastaví jako nulovací tu sekci, ve které se součtový vzorec nachází.
Ostatní výrazy
Pole jsou uzavřena ve dvojtečkách a špičatých závorkách. Např. <:FApol.Kc:>.
Definice vzorce rovněž může obsahovat jako součást výrazu i pole, tj. databázové pole, proměnné a vzorce. Pole jsou ve vzorci uzavřena v dvojtečkách a špičatých závorkách, tj. <: pole:>.
Použití klávesové zkratky CTRL + ENTER vloží nový řádek do definice vzorce.
Pro zjednodušení práce s poli jsou v dolní části dialogového okna Definice vzorce v oddíle Vložit pole všechna dostupná pole uvedena.
Stiskem tlačítka Test ověříte, zda je vzorec správně definován.
V levé části oddílu je zobrazena stejná stromová struktura jako na záložce Pole, ve střední části je uveden seznam polí. Pod seznamem je tlačítko Vložit, prostřednictvím kterého můžete pole (jeho zápis) vložit do definice vzorce.
V pravé části oddílu jsou uvedeny všechny výše uvedené výrazy, které je možné pro urychlení práce opět vložit do definice vzorce prostřednictvím stejnojmenného tlačítka Vložit.
Na konci celého vzorce nezapomínejte uvádět středník.
Jakmile zadáte název a definici vzorce, můžete správnost vzorce ověřit tlačítkem Test. Nejčastější chybou uživatelů bývá, že zapomenou na konci výrazu uvést středník, a program při kontrole vzorce ohlásí chybu syntaxe.
Jestliže se vzorec neobjeví v náhledu ani při tisku sestavy, zkontrolujte, zda je správně zadán, zda hodnoty, ze kterých se počítá, nejsou prázdné a zda jeho hodnota nevychází NULL.
V této souvislosti je nutné upozornit na skutečnost, že REPORT Designer začíná číslování řádků nulou, proto je třeba hledat případnou chybu o řádek výše.
Hotový vzorec potvrdíte tlačítkem OK a můžete ho umístit do návrhu tiskové sestavy. Pro snazší rozpoznání objektu vzorce v návrhu je text“vzorec“ uveden i na objektu.
Vzhledem k tomu, že vzorce představují velmi silný nástroj při navrhování tiskových sestav, budou vybrané výrazy vysvětleny na praktických příkladech v kapitole Přílohy.