5.1 Užitečné příklady vzorců

Vzhledem k tomu, že vzorce představují velmi silný nástroj při navrhování tiskových sestav, budou vybrané výrazy vysvětleny i na praktických příkladech definice vzorců:

<:FAPol.KcDPH:> + <:FAPol.Kc:>;

Prioritu vyhodnocování údajů v zadaném výrazu určíte prostřednictvím kulatých závorek.

Výsledkem výše uvedeného výrazu je součet hodnot uvedených polí, tj. součet jednotkové ceny položky faktury a jejího DPH.

<:FA.Datum:> -5;

Výsledkem výše uvedeného výrazu je datum, které vznikne odečtením pěti dní od hodnoty uvedené v položce datum.

Při počítání s datem můžete jednotlivá data od sebe odečítat. Výsledkem je potom počet dní. Dále můžete k datu přičíst i od data odečíst číselnou hodnotu. Výsledkem je opět datum.

<:FA.DatSplat:> - <:FA.Datum:>;

Výsledkem výše uvedeného výrazu je počet dní, který vznikne odečtením dvou datumových položek od sebe.

<:FAPol.KcJedn:>*(<:FAPol.Sleva:> /100);

Výsledkem výše uvedeného výrazu je vyjádření slevy z jednotkové ceny v korunách.

Protože položka FAPol.Sleva obsahuje procento slev (např. 4), je potřeba tuto položku vydělit 100, a potom je možné touto položkou (0‚04) vynásobit jednotkovou cenu.

<:FA.RelForUh:> > 3;

Výsledkem výše uvedeného výrazu je pravda, pokud je pole FA.RelForUh (forma úhrady) větší než 3.

<:FA.DatStorn:> == NULL;

Výsledkem výše uvedeného výrazu je pravda, pokud pole FA.DatStron (datum storna) neobsahuje žádnou hodnotu, resp. hodnota uvedeného pole je neznámá. Neznámou hodnotu v tomto poli budou mít faktury, které nebyly stornovány.

!(<:FA.DatStorn:> == NULL);

Výsledkem výše uvedeného výrazu je pravda, pokud pole FA.DatStron (datum storna) obsahuje nějakou hodnotu (např. datum či prázdnou hodnotu). Jedná se o negaci předchozího výrazu.

if <:FA.RelTpFak:> <> 1 then „Dobropis nebo vrubopis“ else „Faktura“;

Jestliže (if) pole Typ (FA.RelTpFak) je různé od jedné, potom (then) vytiskni v sestavě text“Dobropis nebo vrubopis”, jinak (else) vytiskni text“Faktura”.

if <:#Tel:> then „Telefon: „+ „<:#Tel:> else „“;

Jestliže (if) proměnná #Tel obsahuje nějakou hodnotu (tj. výraz <:#Tel:> je pravdivý), potom (then) bude v sestavě vytištěn text“Telefon: ” spolu s telefonním číslem v proměnné #Tel (například:“Telefon: 567309953”). Jinak (else) nebude v sestavě vytištěno nic.

if (<:FA.KcCelkem:> > 3000) & (<:FA.KcCelkem:> < 5000) then „Ano“ else „Ne“;

Výsledkem výše uvedeného výrazu bude text“Ano” v případě, že obsah pole FA.KcCelkem je větší než 3000 a zároveň menší než 5000. V ostatních případech bude výsledkem text“Ne”. Protože se jedná o logický součin podmínek, musí obě uvedené podmínky platit zároveň.

Každá z podmínek spojená logickým součinem nebo logickým součtem musí být uzavřena v kulatých závorkách.

if (<:FA.KcCelkem:> < 3000) | (<:FA.KcCelkem:> > 5000) then „Ano“ else „Ne“;

Výsledkem výše uvedeného výrazu bude text“Ano” v případě, že obsah pole FA.KcCelkem bude menší než 3000 nebo větší než 5000. V ostatních případech bude výsledkem text“Ne”. Protože se jedná o logický součet podmínek, stačí, aby platila jedna z uvedených podmínek a výraz bude pravdivý.

Komentáře použité ve vzorci mohou významně zpřehlednit definici vzorce, zejména pokud budete vzorec upravovat po delším čase.

Slovy (<:FA.KcCelkem:>);

V případě, že pole FA.KcCelkem obsahuje částku 9 203‚25, bude výsledkem výrazu text“Devěttisícdvěstětři”. Text bude samozřejmě uvedený bez uvozovek.

Halere (<:FA.KcCelkem:>);

Bude-li pole FA.KcCelkem opět obsahovat částku 9 203‚25, výsledkem výrazu bude text 25.

DenVTydnu (<:FA.Datum:>);

Bude-li pole FA.Datum obsahovat hodnotu 25. 7. 2000, výsledkem výrazu bude číslo 2, které určuje, že tento den je úterý.

Month (<:FA.Datum:>);

Bude-li pole FA.Datum opět obsahovat hodnotu 25. 7. 2000, výsledkem výrazu bude číslo 7, tj. měsíc červenec.

Ucet (<:sUcet.SText:>);

Součtový vzorec obsahuje některou ze součtových funkcí.

V případě, že pole sUcet.SText bude obsahovat např. číslo účtu 19-145263254, výsledkem výrazu bude text 0000190145263254.

Spíše než součtový vzorec doporučujeme využít Součtové pole, neboť jeho použití je pro uživatele snazší.

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 blíže 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ší.

U součtového vzorce je stejně jako u součtového pole možné nastavit nulování funkce v zadané sekci.

Oproti klasickému vzorci je ve vzorci součtovém navíc 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ášť.

Výklopný seznam Nulovat v sekci je přístupný pouze tehdy, pokud je součtový vzorec umístěn v sekci Položka.

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.

Pro jednoduché součty doporučujeme použít spíše jednodušší objekt Součtové pole (viz záložka Součet).

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í.

Sum (<:qDJspotr.Cerpano:>) / Sum (<:qDJspotr.Km:>) * 100;

Příkladem použití součtového vzorce s funkcí Sum je například průměrná spotřeba pohonných hmot v tiskové sestavě Průměrná spotřeba v agendě Kniha jízd.

Chcete-li v definici vzorce spojit text a pole, je nutné to provést prostřednictvím znaménka plus.

První funkce sečte veškeré hodnoty v poli Čerpáno a výsledná hodnota je vydělena součtem kilometrů, který je výsledkem druhé funkce. Výsledkem je průměrná spotřeba paliva na sto kilometrů. Takovéto výjimečné případy nelze řešit pomocí součtového pole.

Dále můžeme uvést například součtový vzorec s funkcí Count.

Count (<:FAPol.KcJedn:>);

Výsledkem výše uvedeného výrazu bude počet položek faktury. V tomto případě je nutné vložit do funkce Count takové pole, které není v případě vyplnění položky prázdné. Zde jsme využili pole FAPol.KcJedn (jednotková cena položky). Rovněž záleží na umístění vzorce v návrhu sestavy. Umístíme-li vzorec do některé z hlaviček či patiček sestavy, obdržíme celkový počet položek dokladu.

Zvolíme-li umístění do sekce Položky, lze součtový vzorec využít pro číslování položek dokladu. Do definice vzorce je možné vložit i jiný vzorec. Například:

!(<:@PrvniVzorec:> > 10);.

Je-li třeba ve vzorci spojit text a pole, je nutné pole připojit k textu znaménkem plus. Například:

„Strana „+ <:#Strana:> + „dokladu „ + <:FA.Cislo:>.