Využite nový Účet POHODA pre bezpečnejšie a pohodlnejšie jednotné prihlasovanie k službám a aplikáciam STORMWARE

4.5 Záložka Vzorec

Každý vzorec sa skladá z návrhu a vlastnej definície vzorca. Obidva údaje zadáte do prvých dvoch polí v dialógovom okne Definícia vzorca.

Najskôr zadajte názov vzorca, ktorý môže obsahovať iba písmená (bez slovenských znakov), číslice a podčiarovník. Názov musí začínať písmenom a odporúčame zvoliť ho výstižne tak, aby ste i po dlhšej dobe ľahko odvodili, kvôli čomu bol vzorec vytvorený.

45_1_sk.psd

Vlastná definícia vzorca sa zadáva do ďalšieho pola a môže obsahovať len určité výrazy, ktoré sú uvedené nižšie.

Definícia musí byť ukončená bodkočiarkou.

Názov vzorca môže obsahovať iba písmená bez diakritiky, číslice a podčiarovník a musí začínať písmenom.

Pretože vytváranie a práca so vzorcami je najsilnejší a najzložitejší nástroj aplikácie REPORT Designer, uvádzame tu prehľad jednotlivých častí dialógového okna Definícia vzorca.

  1. Do pola Názov zadajte názov vzorca podľa vyššie uvedených pravidiel.
  2. Pole Definícia vzorca obsahuje vlastný tvar vzorca, zložený z výrazov a funkcií.
  3. Strom dostupných databázových polí. Obsahuje rovnaký výber ako stromová štruktúra na záložke Pole.
  4. Zoznam dostupných databázových polí.
  5. Zoznam dostupných výrazov a funkcií, ktoré je možné použiť v definícii vzorca.
  6. Popis dátového typu vybraného databázového pola.
  7. Tlačidlá pre vloženie vybraného databázového pola alebo výrazu do definície vzorca. Tlačidlá je možné použiť len ak je vybrané pole alebo výraz.
  8. Tlačidlo Test slúži k otestovaniu syntaxu zápisu definície vzorca.
Definícia vzorca môže obsahovať iba určené výrazy a vždy musí byť ukončená bodkočiarkou.

Výrazy, ktoré je možné použiť a príklady ich použitia sú nižšie uvedené.

Priame hodnoty

  • Celé číslo – jedná sa o číslo bez desatinných miest.
    Príklad: 40 alebo -156
  • Reálne číslo – jedná sa o číslo vrátane desatinných miest, oddelených čiarkou.
    Príklad: 68, 12 alebo -169,35
  • Textová konštanta – jedná sa o text, ktorý musí byť uzatvorený v úvodzovkách. V zozname pod polom Definícia vzorca je výraz uvedený takto: “text“
    Príklad: “Ahoj alebo ““
  • Konštanta NULL – jedná sa o hodnotu, ktorá je neznáma. Pozor, hodnota NULL sa líši od nuly alebo prázdneho textu (medzier).
    Príklad: NULL
  • Komentár – jedná sa o komentár k vzorcu uzatvorený medzi dvoma lomítkami s hviezdičkami. Komentár slúži iba k tomu, aby bolo možné do vzorca uviesť poznámky, ktoré nemajú vplyv na funkciu vzorca. V zozname pod polom Definícia vzorca je jeho definícia uvedená takto: /*komentár*/
    Príklad: /* Toto je komentár ku vzorcu */

Základné matematické funkcie

Použitie niektorých výrazov bližšie ozrejmia príklady uvedené v kapitole Prílohy.

Tieto funkcie je možné použiť iba vtedy, ak obidve strany funkcie sú čísla. Výnimku tvorí iba typ Text, ktorý je možné sčítať – skladať dva texty za seba dohromady do jedného reťazca. Druhú výnimku tvorí typ Dátum, ku ktorému je možné pripočítať/odpočítať počet celých dní a navyše je možné odpočítať dve polia typu Dátum od seba. Výsledkom je rozdiel v počte dní.

Ak chcete v definícii vzorca spojiť dva texty alebo text a pole, je možné vykonať to prostredníctvom znamienka plus.

  • Súčet dvoch výrazov – jedná sa o znamienko plus. V zozname pod polom Definícia vzorca je výraz uvedený takto: a + b
    Príklad: 1 + 1 alebo “Ah“ + “oj“ (výsledkom je text “Ahoj“)
  • Rozdiel dvoch výrazov – jedná sa o znamienko mínus. V zozname pod polom Definícia vzorca je výraz uvedený takto: a – b
    Príklad: 2 - 1
  • Súčin dvoch výrazov – jedná sa o znamienko krát. V zozname pod polom Definícia vzorca je výraz uvedený takto: a * b
    Príklad: 3 * 2
  • Podiel dvoch výrazov – jedná sa o znamienko lomeno. V zozname pod polom Definícia vzorca je výraz uvedený takto: a / b
    Príklad: 4 / 3

Základné porovnávacie funkcie

  • Logický výraz rovnosť – jedná sa o znamienko rovná sa. V zozname pod polom Definícia vzorca je výraz uvedený takto: ==
    Pozor: Do vzorca je nutné vkladať vždy dve znamienka rovná sa.
    Príklad: “Vľavo“ == “Vľavo“
  • Logický výraz nerovnosť – jedná sa o znamienko nerovná sa. V zozname pod polom Definícia vzorca je výraz uvedený takto: <>
    Príklad: “Vľavo“ <> “Vpravo“
  • Logický výraz je menší než – jedná sa o znamienko menší. V zozname pod polom Definícia vzorca je výraz uvedený takto: <
    Príklad: <:qSKz.Ks:> < 8
  • Logický výraz je menší alebo sa rovná – jedná sa o znamienko menší alebo rovný. V zozname pod polom Definícia vzorca je výraz uvedený takto: <=
    Príklad: <:qSKz.Ks:> <= 8
  • Logický výraz je väčší než – jedná sa o znamienko väčší. V zozname pod polom Definícia vzorca je výraz uvedený takto: >
    Príklad: <:qSKz.Ks:> > 8
  • Logický výraz je väčší alebo sa rovná – jedná sa o znamienko väčší alebo rovno. V zozname pod polom Definícia vzorca je výraz uvedený takto: >=
    Príklad: <:qSKz.Ks:> >= 8

Základné logické funkcie

  • Negácia logického výrazu – jedná sa o opak výrazu uvedeného za znamienkom výkričník. V zozname pod polom Definícia vzorca je výraz uvedený takto: !(negácia)
    Príklad: !(“Vľavo“ <> “Vpravo“)
  • Logický súčin – jedná sa o logický operátor niekoľkých logických výrazov. Výsledkom je pravda, ak sú všetky výrazy platné (pravdivé). V zozname pod polom Definícia vzorca je výraz uvedený takto: & (log. súčin)
    Príklad: (<:qSKz.Ks:> >= 1) & (<:qSKz.Ks:> <= 5)
    (Výsledkom je pravda, ak je hodnota premennej qSKz.Ks väčšia alebo rovná 1 a zároveň menšia alebo rovná 5).
  • Logický súčet – jedná sa o logický operátor niekoľkých logických výrazov. Výsledkom je pravda, ak je aspoň jeden logický výraz platný (pravdivý). V zozname pod polom Definícia vzorca je výraz uvedený takto: | (log. súčet)
    Príklad: (<:qSKz.Ks:> <= 3) | (<:qSKz.Ks:> >= 5)
Použitie niektorých výrazov bližšie ozrejmia príklady uvedené v kapitole Prílohy.

Špeciálne výrazy

  • Zátvorky – jedná sa o znamienka klasických guľatých zátvoriek. V zozname pod polom Definícia vzorca je výraz uvedený takto: (zátvorky)
    Príklad: ( 8 + 4 ) / 2
  • Podmienený výraz – jedná sa o klasickú podmienku ak – tak – inak (ak platí výraz A, tak urob B, inak urob C), ktorá slúži k vyhodnoteniu údajov. Predovšetkým v prvej časti podmieneného výrazu môžu byť výborne využité logické súčiny a súčty. V zozname pod polom Definícia vzorca je výraz uvedený takto: if a then b else c
    Príklad: if (<:qSKz.Ks:> >= 5) then “Ano“ else “Ne“

Peňažné funkcie

Funkcie je možné aplikovať iba na výrazy, ktoré obsahujú číslo.

  • Slovom – funkcia vracia slovné vyjadrenie peňažnej čiastky (celé časti čísla). V zozname pod polom Definícia vzorca je funkcia uvedená takto: Slovy (čiastka)
    Príklad: Slovy (45,60)
    Výsledok: text “Štyridsaťpäť“
  • Koruny – funkcia vracia číslo zaokrúhlené na jednotky dole. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Koruny (čiastka)
    Príklad: Koruny (45,60)
    Výsledok: číslo 45
  • Haliere – funkcia vracia text, ktorý obsahuje prvé dve desatinné miesta peňažnej čiastky (reálneho čísla). V zozname pod polom Definícia vzorca je funkcia uvedená takto: Halere (čiastka)
    Príklad: Haliere (45,60)
    Výsledok: text “60“
  • Zaokrúhli – funkcia vracia číslo zaokrúhlené na zadaný počet desatinných miest, maximálne 4. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Round (číslo, miest)
    Príklad: Round (45,60689, 2)
    Výsledok: text “45.61“
  • Abs – funkcia vráti absolútnu hodnotu čísla. Definícia funkcie je Abs (číslo).
    Príklad: Abs (-1,25)
    Výsledok: číslo 1,25
  • EuroDualCastka – táto funkcia vracia užívateľovi prepočítanú čiastku, ktorú zadal ako parameter. Čiastka je prepočítaná kurzom z globálneho nastavenia v programe POHODA. Čiastka je zaokrúhlená na počet desatinných miest a prepočet je vykonaný do meny, na základe dátumu účtovnej jednotky.
    Príklad: EuroDualCastka (<:FA.KcCelkem:>)
    Výsledok: prepočíta sa celková čiastka faktúry pre duálne zobrazenie

Dátumové funkcie

Funkcie je možné aplikovať iba na výrazy obsahujúce dátum. V príkladoch uvedených pri jednotlivých funkciách budeme používať pole <:FA.Datum:>, ktoré bude obsahovať dátum 30. 07. 2015.

  • Číslo dňa v týždni – funkcia vracia poradové číslo dňa v týždni z príslušného dátumu. Čísla vyjadrujú nasledujúce dni: 1 – pondelok, 2 – utorok, 3 – streda, 4 – štvrtok, 5 – piatok, 6 – sobota, 7 – nedeľa. V zozname pod polom Definícia vzorca je funkcia uvedená takto: DenVTydnu (dátum)
    Príklad: DenVTydnu (<:FA.Datum:>)
    Výsledok: 4 (štvrtok)
  • Deň – funkcia vracia deň z príslušného dátumu. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Day (dátum)
    Príklad: Day (<:FA.Datum:>)
    Výsledok: číslo 30
  • Číslo mesiaca – funkcia vracia poradové číslo mesiaca z príslušného dátumu. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Month (dátum)
    Príklad: Month (<:FA.Datum:>)
    Výsledok: číslo 7
  • Letopočet – funkcia vracia letopočet z príslušného dátumu. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Year (dátum)
    Príklad: Year (<:FA.Datum:>)
    Výsledok: číslo 2015
  • Vytvor dátum – funkcia vytvorí zo zadaných čísel dátum. Čísla môžu byť zadané alebo celé alebo reálne. Desatinné reálne čísla sú zaokrúhlené na jednotky dole. V prípade, že je niektorý zo zadaných parametrov funkcie nečíselný, funkcia vracia výsledok NULL. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Date (rok, mesiac, deň).
    Príklad: Date (2015,07,30)
    Výsledok: typ dátum o hodnote 30. 07. 2015
  • EuroDualJeObdobi – funkcia načíta z globálneho nastavenia programu POHODA v sekcii Prechod na euro dátum Od–Do pre duálne zobrazovanie. Ak dátum spadá do tohto obdobia, funkcia vracia hodnotu 1, inak vracia hodnotu 0. Touto metódou sa podmieňujú väčšinou sekcie, ktoré sú bežne skryté, a v prípade, že dátum uvedený ako parameter funkcie do obdobia spadá, sekcia sa zobrazí.
    Príklad: EuroDualJeObdobi (<:FA.Datum:>)
    Výsledok: jedná sa o dátum vydania, resp. vystavenia dokladu pri faktúrach

Textové funkcie

Tieto funkcie je možné aplikovať iba na výrazy, ktoré obsahujú text. V prípade, že zadaný výraz nie je textový, vracia funkcia hodnotu NULL.

  • Find – funkcia vracia index prvého výskytu zadanej hodnoty, ktorý začína od nuly. Ak sa zadaná hodnota v texte nevyskytuje, vracia funkcia hodnotu -1 (nepravda). V zozname pod polom Definícia vzorca je funkcia uvedená takto: Find (text, text).
    Príklad: Find (“Programujeme“, “gram“)
    Výsledok: 3
  • Len – funkcia vracia dĺžku zadaného textu ako celé číslo. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Len (text).
    Príklad: Len (“Auto“)
    Výsledok: 4
  • Mid – funkcia vracia zvyšok textu od zadaného indexu, resp. vracia časť textu zadanej dĺžky od zadaného indexu. Index je počítaný od nuly. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Mid (text, od), resp. Mid (text, od, dĺžka).
    Príklad: Mid (“Program“,3), resp. Mid (“Program“,3,2)
  • ToLower – funkcia vracia reťazec prevedený na malé znaky.
  • ToNumber – funkcia prevedie text na číslo. V prípade, že nie je možné zadaný text previesť na číslo, vracia funkcia hodnotu NULL. V zozname pod polom Definícia vzorca je funkcia uvedená takto: ToNumber (text).
    Príklad: ToNumber (“13,25“)
    Výsledok: reálne číslo 13,25
  • ToUpper – funkcia vráti reťazec vo veľkých znakoch podľa znakovej sady. Ak nie je možné znak previesť na veľký, je vrátený v nezmenenej podobe.
  • Trim – funkcia odstráni medzery na začiatku a konci reťazca.
  • Ucet – funkcia vykoná prevod čísla bankového účtu na text, ktorý má šestnásť znakov. Pritom vypustí pomlčky a obidve časti čísla účtu (predčíslie tvorené šiestimi znakmi a vlastné číslo účtu tvorené desiatimi znakmi), prípadne doplní zľava nulami, aby bol dodržaný celkový počet šestnástich znakov. V zozname pod polom Definícia vzorca je funkcia uvedená takto: Ucet (text).
    Príklad: Ucet (“19-4563258741“)
    Výsledok: text „0000194563258741“
Funkciu Účet je vhodné použiť pre vypísanie čísla účtu do okienka formulára.

Súčtové funkcie

Použitie súčtovej funkcie vo vzorci je rovnaké ako použitie súčtového pola.

Funkcie je možné aplikovať iba na objekty typu pole, t. j. na databázové polia, premenné a vzorce.

Súčtová funkcia Počet rôznych porovnáva hodnotu vždy s hodnotou predchádzajúcou, preto pre jej správnu činnosť musia byť hodnoty pola správne zotriedené už z programu POHODA.

  • Count – funkcia vracia počet neprázdnych hodnôt zadaných vo vybranom poli. V zozname pod polom Definícia je funkcia uvedená takto: Count (<:pole:>)
    Príklad: Count (<:FA.Datum:>)
    Výsledok: zobrazí počet faktúr, ktoré nemajú pole Dátum prázdne
  • DistCount – funkcia vracia počet rôznych hodnôt zadaných vo vybranom poli. V zozname pod polom Definícia je funkcia uvedená takto: DistCount (<:pole:>)
    Príklad: DisCount (<:FA.Datum:>)
    Výsledok: vracia počet faktúr, ktoré nemajú pole Dátum prázdne a pri ktorých sa hodnoty v poli Dátum líšia
  • Min – funkcia vracia minimálnu hodnotu z hodnôt zadaných vo vybranom poli. V zozname pod polom Definícia je funkcia uvedená takto: Min (<:pole:>)
    Príklad: Min (<:FA.Datum:>)
    Výsledok: najmenší dátum, ktorý je uvedený v daných faktúrach
  • Max – funkcia vracia maximálnu hodnotu z hodnôt zadaných vo vybranom poli. V zozname pod polom Definícia je funkcia uvedená takto: Max (<:pole:>)
    Príklad: Max (<:FA.Datum:>)
    Výsledok: najväčší dátum, ktorý je uvedený v daných faktúrach
  • Sum – funkcia vracia súčet všetkých hodnôt zadaných vo vybranom poli a je možné ju aplikovať iba na polia, ktoré obsahujú číselný údaj. V zozname pod polom Definícia je funkcia uvedená takto: Sum (<:pole:>)
    Príklad: Sum (<:FA.Kc:>)
    Výsledok: súčet všetkých čiastok bez DPH pri položkách faktúry
Skôr než súčtový vzorec odporúčame využiť Súčtové pole, nakoľko jeho použitie je pre užívateľa jednoduchšie.

45_2.png

Ak vo vzorci použijete niektorú zo súčtových funkcií, vytvoríte tzv. súčtový vzorec, ktorý je veľmi podobný súčtovému polu, o ktorom pojednáva záložka Súčet. Súčtové pole odporúčame vo väčšine prípadov využiť skôr ako súčtový vzorec, nakoľko jeho použitie je pre užívateľa jednoduchšie.

Oproti klasickému vzorcu je v súčtovom vzorci navyše na záložke Vzorec výklopný zoznam Nulovať v sekcii, v ktorom je možné nastaviť, v ktorej sekcii sa má nulovať výsledok funkcie. Tým napríklad určíte, či súčet má byť kumulovaný od začiatku tlačovej zostavy, alebo sa majú hodnoty sčítať za každú stranu zvlášť.

Pri súčtovom vzorci je rovnako ako v súčtovom poli možné nastaviť nulovanie funkcie v zadanej sekcii.

Výklopný zoznam Nulovať v sekcii sa neobjaví ihneď po zadaní súčtovej funkcie do definície vzorca, ale po stlačení tlačidla Test alebo OK. Vtedy program vykoná text, či zadaný vzorec obsahuje súčtovú funkciu a v prípade, že sa jedná o súčtový vzorec, zobrazí výklopný zoznam Nulovať v sekcii.

Výklopný zoznam je prístupný iba vtedy, ak je vzorec umiestnený v sekcii Položka. V ostatných prípadoch je zoznam zašednutý a nie je možné nulovaciu sekciu zvoliť ručne. Program automaticky nastaví ako nulovaciu tú sekciu, v ktorej sa súčtový vzorec nachádza.

Ostatné výrazy

Polia sú uzatvorené v dvojbodkách a špicatých zátvorkách. Napr. <:FApol.Kc:>.

Definícia vzorca rovnako môže obsahovať ako súčasť výrazu i pole, t. j. databázové pole, premenné a vzorce. Polia sú vo vzorci uzatvorené v dvojbodkách a špicatých zátvorkách, t. j. <:pole:>

Použitie klávesovej skratky CTRL + ENTER vloží nový riadok do definície vzorca.

Pre zjednodušenie práce s poliami sú v dolnej časti dialógového okna Definícia vzorca v oddiele Vložiť pole všetky dostupné polia uvedené.

Stlačením tlačidla Test overíte, či je vzorec správne nadefinovaný.

V ľavej časti oddielu je zobrazená rovnaká stromová štruktúra ako na záložke Pole, v strednej časti je uvedený zoznam polí. Pod zoznamom je tlačidlo Vložiť, prostredníctvom ktorého môžete pole (jeho zápis) vložiť do definície vzorca.

V pravej časti oddielu sú uvedené všetky vyššie uvedené výrazy, ktoré je možné pre urýchlenie práce opäť vložiť do definície vzorca prostredníctvom rovnomenného tlačidla Vložiť.

Na konci celého vzorca nezabudnite uvádzať bodkočiarku.

Akonáhle zadáte názov a definíciu vzorca, môžete správnosť vzorca overiť tlačidlom Test. Najčastejšou chybou užívateľov býva, že zabudnú na konci výrazu uviesť bodkočiarku, a program pri kontrole vzorca ohlási chybu syntaxu.

45_3.png

Ak sa vzorec neobjaví v náhľade ani pri tlači zostavy, skontrolujte, či je správne zadaný, či hodnoty, z ktorých sa počíta, nie sú prázdne a či jeho hodnota nevychádza NULL.

V tejto súvislosti je nutné upozorniť na skutočnosť, že REPORT Designer začína číslovanie riadkov nulou, preto je treba hľadať prípadnú chybu o riadok vyššie.

Hotový vzorec potvrdíte tlačidlom OK a môžete ho umiestniť do návrhu tlačovej zostavy. Pre jednoduchšie rozpoznanie objektu vzorca v návrhu je text „vzorec“ uvedený i na objekte.

Vzhľadom k tomu, že vzorce predstavujú veľmi silný nástroj pri navrhovaní tlačových zostáv, budú vybrané výrazy vysvetlené na praktických príkladoch v kapitole Prílohy.