Výpočetní funkce |
Výpočetní funkce (výrazy) jsou velice silný nástroj pro výsledné zpracování tisknuté hodnoty položky. Lze jej omezeně využít i k formátování výstupu.
Základní okno výrazů:
Pokud vytváříte uživatelskou funkci pro použití v dokumentu, je nutné zadat ještě název funkce a typ výsledku. (Pokud chcete výsledek funkce ještě použít pro další matematické výpočty, je nutné označit typ výsledku jako číselný).
Dostupné položky tabulky - do výrazu je možné přidat pole z připojené tabulky.
Proměnné -
•Datum tisku - do výrazu přidá aktuální datum
•Čas tisku - do výrazu přidá aktuální čas
•Číslo řádku tabulky - do výrazu přidá číslo řádku připojené tabulky
•Počet řádků tabulky - do výrazu přidá celkový počet řádků připojené tabulky
Uživatelská data - do funkce lze použít i jednotlivé položky uživatelských dat
Položky formuláře - seznam všech položek formuláře (pokud vytváříte dokument, tento seznam chybí)
Operátory - do výrazu vloží matematický operátor. (Pozn. operátor "IN" znamená "je v seznamu". Např &{polozka1} IN[10,20] - hodnota položky 13 musí být 10 nebo 20 ... výsledek je logický ANO/NE)
Matematické, Textové, Datumové, Logické funkce - do výrazu přidá funkci (popis funkcí viz níže)
Databázové fuknce - do výrazu přidá výpočetní funkci z databáze (počet řádků, součet, průměr sloupce apod - popis viz níže) |
pozn: tyto funkce jsou dostupné pouze při tvorbě seznamů |
Tvorba výrazu:
1. | Vyberte některou položku ze seznamu "Proměnné", "Funkce" apod. |
2. | Stiskněte ENTER a nebo tlačítko |
3. | Do výrazu bude přidána vybraná proměnná |
4. | Po vytvoření výrazu stiskněte tlačítko pro kontrolu |
Významy některých výrazů:
&{položka1}+&{položka2} ..... sečte hodnotu z položky 1 a 2. Pokud jsou typy položek číselné, bude výsledek také číslo (99+10=109). Pokud jsou typy textové bude výsledek text (99+10=9910)
&{položka1}++&{položka2} ... operátor ++ vloží mezi dvě textové hodnoty mezeru (např JMÉNO PŘÍJMENÍ) |
&{položka1}*0.25 .... vynásobí hodnotu položky1 číslem 0.25
IIF(&{položka1} IN[10,20], 'je v seznamu', 'není v seznamu') ..... pokud je hodnota položky1 v seznamu (10,20) je výsledkem výrazu text "je v seznamu", v opačném případě je výsledkem text "není v seznamu"
IIF(&{datum}='', DATE(0), &{polozka1}) ... pokud je hodnota položky datum prázdná, je výsledkem funkce aktuální datum, jinak hodnota položky polozka1
Výsledek zobrazuje aktuální výsledek fuknce. Pokud funkci práve píšete, je možné že se ve výsledku zátím zobrazuje "chyba".
FUNKCE
Jednotlivé vestavěné funkce lze podle charakteru rozdělit na čtyři skupiny:
•matematické - používají jako argument ( zpracovávanou hodnotu) číselný údaj, např. položku Výše pokuty, PSČ apod.
•textové - používají jako argument textový údaj, např. položku Obchodní firma, IČO, Číslo jednací
•datové a časové - používají jako argument údaj typu Datum resp. čas, např. Datum vydání stanoviska
•logické a ostatní
Ve funkčních výrazech lze použít i argumenty jiných typů, než předpokládají jednotlivé funkce. V tom případě bude provedena automatická konverze typů. Například text bude převeden na číslo, číslo bude převedeno na datum a podobně.
V dalším textu jsou uvedeny název funkce, typy argumentů a výsledku, referenční popisy jednotlivých funkcí a příklady jejich užití. Červeně jsou označeny výsledky příkladů, kde je to možné.
Funkce matematické
ABS (x) - vrací absolutní hodnotu argumentu |
x: číslo; vrací číslo |
Funkce vrací absolutní hodnotu argumentu x. |
Příklad: ABS(-152) 152 ABS(12.22) 12.22 ABS(&{polozka1}) |
INT (x) - vrací celočíselnou část argumentu |
x: číslo; vrací číslo |
Funkce vrací celočíselnou část reálného argumentu x, neboli část před desetinnou čárkou. |
Příklad: INT(-12,22) -12 INT(2.2545454542) 2 INT(&{polozka1})
|
SGN (x) - vrací znaménko argumentu |
x: číslo; vrací číslo |
Funkce vrací informaci o tom, zda je argument kladný, nula nebo záporný, v hodnotách -1,0 a 1. |
Příklad: SGN(-12) -1 SGN(521.02) 1 SGN(&{polozka1}) |
MIN (x,y) - vrací menší ze dvou argumentů |
x,y: číslo; vrací číslo |
Funkce vrací menší hodnotu ze dvou zadaných argumentů x a y. |
Příklad: MIN(10,15) 10 MIN(-1,1) -1 MIN(&{polozka1},&{polozka2}) |
MAX (x,y) - vrací větší ze dvou argumentů |
x,y: číslo; vrací číslo |
Funkce vrací větší hodnotu ze dvou zadaných argumentů x a y. |
Příklad: MAX(3,-152) 3 MAX(10.99,4.522) 10.99 MAX(&{polozka1},&{polozka2}) |
ROUND (x) – zaokrouhlí reálné číslo na nejbližší celé číslo |
x: číslo; vrací celé číslo |
Funkce vrací nejbližší celé číslo k reálnému číslu x. |
Příklad: ROUND(-3.152) -3 ROUND(1.5) 2 ROUND(2.5) 2 |
EXP (x) – exponenciální funkce |
x: číslo; vrací číslo |
Funkce vrací x-tou mocninu přirozeného čísla. |
Příklad: EXP(1) 2.718 EXP(-5.5) 0.005 EXP(%8) |
LOG (x) – logaritmická funkce |
x: číslo; vrací číslo |
Funkce vrací přirozený logaritmus argumentu. |
Poznámka: Argument musí být číslo kladné. |
Příklad: LOG(7.388) 1.9999 LOG(0.005) -5.298 LOG(&{polozka1}) |
SIN, COS, TAN, COTG(x) – goniometrické funkce |
x: číslo; vrací číslo |
Funkce vrací hodnotu goniometrické funkce sinus/kosinus/tangens/kotangens argumentu. |
Poznámka: Úhlová míra se předpokládá v radiánech. |
Příklad: SIN(3.14/2) 1 COS(0.1) 0.995 TAN(&{polozka1}) |
ASIN, ACOS, ATAN, ACOTG(x) – cyklometrické funkce |
x: číslo; vrací číslo |
Funkce vrací úhlovou hodnotu arcsinus/arckosinus/arctangens/arckotangens argumentu. Inverzní funkce k funkcím goniometrickým. |
Poznámka: Absolutní hodnota argumentu musí být < 1, výsledný úhel je v radiánech. |
Příklad: ASIN(0.5) 0.5236 ACOS(-0.2) 1.772 ATAN(&{polozka1}) |
Funkce řetězcové - textové
LEFT (s,n) – vrací část textu zleva |
s: text; n: číslo; vrací text |
Funkce vrací část textu s zleva o délce n znaků |
Příklad: LEFT(%10,3) LEFT('Slovo',2) Sl |
RIGHT (s,n) - vrací část textu zprava |
s: text; n: číslo; vrací text |
Funkce vrací část textu s zprava o délce n znaků |
Příklad: RIGHT(&{polozka1},3) RIGHT('Slovo',2) vo |
SUBSTR (s,n,m) - vrací část textu argumentu |
s: text; n,m: číslo; vrací text |
Funkce vrací část textu s, začínající na pozici n, o délce m znaků |
Příklad: SUBSTR(&{polozka1},3,5) SUBSTR('Slovo',2,4) lovo |
LENGTH (s) - vrací počet znaků v argumentu - textu s |
s: text; vrací číslo |
Funkce vrací počet znaků argumentu s včetně mezer a interpunkčních znamének. |
Příklad: LENGTH(&{polozka1}) LENGTH('Slovo') 5 |
POS (z,s) - vrací pozici znaku z v textu s |
z,s: text; vrací číslo |
Funkce vrací pozici prvního výskytu hledaného znaku z v argumentu s, může sloužit i ke zjištění, zda vůbec daný text obsahuje hledaný znak. Pokud je znak nalezen, funkce vrací pozici hledaného znaku, jinak vrací číslo nula. |
Poznámka: Pokud je argument z delší text, hledá se pouze první znak tohoto textu |
Příklad: POS('C',&{polozka1}) POS('o','Slovo') 3 POS('c','Text k vyhledání') 0 |
GETSEPAR (s,n,znak) - vrací text po n-tém výskytu znaku |
s: text, n:číslo, znak:text ; vrací text |
Funkce vrací text od n-tého výskytu znaku do dalšího výskytu znaku. |
Poznámka: Pokud je argument "znak" více znaků, hledá se pouze první znak tohoto textu |
Příklad: GETSEPAR('ahoj Pavle Soukupe',1,' ') ... Pavle GETSEPAR('ahoj Pavle Soukupe',0,' ') ... ahoj GETSEPAR('ee;rr;tt;yy;uu;ii;oo;pp;aa',3,';') ...yy |
UPPER (s) – převod na velká písmena |
s: text; vrací text |
Funkce převádí text s na text složený z velkých písmen. |
Příklad: UPPER(&{polozka1}) UPPER('Slovo') SLOVO |
LOWER (s) - převod na malá písmena |
s: text; vrací text |
Funkce převádí text s na text složený z malých písmen. |
Příklad: LOWER(&{polozka1}) LOWER('Slovo') slovo |
LTRIM (s) - odstraňuje mezery a speciální znaky z argumentu s zleva |
s: text; vrací text |
Funkce odstraňuje mezery a speciální znaky z textu s, a to zleva |
Příklad: LTRIM(&{polozka1}) LTRIM(' Slovo') Slovo |
RTRIM (s) - odstraňuje mezery a speciální znaky z argumentu s zprava |
s: text; vrací text |
Funkce odstraňuje mezery a speciální znaky z textu s, a to zprava |
Příklad: RTRIM(&{polozka1}) RTRIM('Slovo ') Slovo |
ALLTRIM (s) - odstraňuje mezery a speciální znaky z textu s zleva i zprava |
s: text; vrací text |
Funkce odstraňuje mezery a speciální znaky z textu s, a to zleva i zprava |
Příklad: LTRIM(&{polozka1}) LTRIM(' Slovo ') Slovo |
FORMAT (x,f) - formátuje číslo x ve stylu zadaného formátovacího řetězce f |
x: číslo; f: text; vrací text |
Funkce formátuje číslo x za pomoci formátovacího řetězce f. |
Poznámka: Možnosti této funkce jsou větší, než ukazují příklady |
Příklad: FORMAT(&{polozka1}, '% %%0.00') 1 234,56 FORMAT(12.3456, '0.0') 12,3 FORMAT(12.3456, '0.000') 12,346 |
CHR(n) - vrací znak, odpovídající ASCII hodnotě argumentu n |
n: číslo; vrací text |
Funkce vrací textovou podobu znaku, který je reprezentován argumentem n - jeho číselnou ASCII hodnotou. |
Příklad: CHR(&{polozka1}) CHR(97) a |
ORD(z) - vrací ASCII hodnotu znaku z |
z: text; vrací číslo |
Funkce vrací ASCII hodnotu znaku, který je reprezentován argumentem z |
Poznámka: Je-li argument delší text, bere se z něho pouze první znak. |
Příklad: ORD(&{polozka1}) ORD('a') 97 |
STRTONUM(s) - vrací číselné vyjádření textu s |
s: text; vrací číslo |
Funkce vrací číselnou hodnotu, která vznikne interpretací textu s |
Poznámka: Pokud nelze převést text na číslo, vrací funkce hodnotu 0. Převody tohoto typu se zpravidla provádí automaticky a není nutné je provádět explicitně |
Příklad: STRTONUM('12,4587') 12.4587 STRTONUM('12a789ss') 0 |
NUMTOSTR(x) - vrací textové vyjádření čísla x |
x: číslo; vrací text |
Funkce vrací textovou hodnotu, která vznikne interpretací čísla x |
Poznámka: Převody tohoto typu se zpravidla provádí automaticky a není nutné je provádět explicitně. Pro formátování čísel je určena funkce FORMAT. |
Příklad: NUMTOSTR(12.4587) 12,4587 |
NUMTOTEXT(x) - vrací slovní vyjádření čísla x |
x: číslo; vrací text |
Funkce vrací textovou hodnotu - číslo slovy |
Příklad: NUMTOTEXT(1.205,-Kč) tisícdvěstěpět |
DELSEPAR(x) - odstranění mezer z textu |
x: text; vrací text |
Funkce vrací textovou hodnotu - text bez mezer |
Příklad: DELSEPAR(' Slovo ABC ') SlovoABC |
Funkce datové a časové
FORMATDT(x,f) - vrací datum x, formátované podle řetězce f |
x: číslo; f: text; vrací text |
Funkce formátuje údaj x typu Datum podle hodnot, nastavených v řetězci f. Formátovací řetězec f může obsahovat tyto hodnoty: d den bez výchozí nuly (1-31). dd den včetně výchozí nuly (01-31). ddd zkrácený název dne (Sun-Sat) dddd plné jméno dne (Sunday-Saturday) m měsíc bez výchozí nuly (1-12). mm měsíc včetně výchozí nuly (01-12). mmm zkrácený název měsíce (Jan-Dec) mmmm plné jméno měsíce (January-December) yy rok ve zkráceném tvaru (00-99). yyyy rok v plném tvaru (0000-9999). h hodina bez výchozí nuly (0-23). hh hodina včetně výchozí nuly (00-23). s sekunda bez výchozí nuly (0-59). ss sekunda včetně výchozí nuly (00-59). |
Příklad: FORMATDT(&{polozka1}, 'rrrr-mm-dd') FORMATDT('30.1.1999','rrrr-mm-dd') 1999-01-30 |
YEAR(x) - vrací rok z argumentu typu Datum |
x: číslo; vrací číslo |
Funkce vrací údaj Rok z argumentu typu Datum. |
Příklad: YEAR(%24) YEAR('15.12.2001') 2001 |
MONTH(x) – vrací měsíc z argumentu typu Datum |
x: číslo; vrací číslo |
Funkce vrací údaj Měsíc z argumentu typu Datum. |
Příklad: MONTH(&{polozka1}) MONTH('15.12.2001') 12 |
DAY(x) - vrací den z argumentu typu Datum |
x: číslo; vrací číslo |
Funkce vrací údaj Den z argumentu typu Datum. |
Příklad: DAY(&{polozka1}) DAY('15.12.2001') 15 |
HOUR(x) - vrací hodiny z argumentu typu Čas |
x: číslo; vrací číslo |
Funkce vrací údaj Hodina z argumentu typu Čas. |
Příklad: HOUR(&{polozka1}) HOUR('12:25:01') 12 |
SECUNDE(x) - vrací sekundy z argumentu typu Čas |
x: číslo; vrací číslo |
Funkce vrací údaj Sekunda z argumentu typu Čas. |
Příklad: SECUNDE(&{polozka1}) SECUNDE('12:25:01') 01 |
SECUNDE(x) - vrací sekundy z argumentu typu Čas |
x: číslo; vrací číslo |
Funkce vrací údaj Sekunda z argumentu typu Čas. |
Příklad: SECUNDE(&{polozka1}) SECUNDE('12:25:01') 01 |
DATE(x) - vrací datum |
x: číslo; vrací datum |
Funkce vrací datum. Pokud je x=0 je vráceno aktuální datum. Kladná hodnota x přičítá určitý počet dnů, záporná naopak odečítá. |
Příklad: DATE(0) ...dnešní datum DATE(-2) ... předvčerejšek DATE(&{polozka1}) |
Logické a ostatní
IIF(v,x,y) - vrací číselnou hodnotu x nebo y podle hodnoty ve výrazu v IIF(v,s,t) - vrací text s nebo t podle hodnoty ve výrazu v |
v: číslo nebo logická hodnota; x,y: číslo; vrací číslo v: číslo nebo logická hodnota; s,t: text; vrací text |
Je-li splněna podmínka ve výrazu v, nebo je-li číselný argument v > 0, vrací funkce jako výsledek druhý argument, jinak vrátí ve výsledku třetí argument |
Poznámka: Výsledek této funkce může být jak číslo, tak i text |
Příklad: IIF(&{polozka1} = 0, &{polozka2}, &{polozka3}) IIF(&{polozka1} > 0, 'příjem', 'výdej') výdej (pokud bude &{polozka1} <= 0) |
ISNULL(p) - vrací informaci o tom, zda je položka p v databázi nevyplněna |
p: položka databáze; vrací logickou hodnotu nebo číslo (1=ano, 0=ne) |
Funkce vrací informaci o prázdných položkách v databázi |
Poznámka: Tuto funkci lze aplikovat pouze na položky databáze |
Příklad: ISNULL(&{polozka1}) 1 (pokud hodnota položky &{polozka1} nebyla zadána) IIF(ISNULL(&{polozka1}), 'nevyplněno', &{polozka1}) nevyplněno |
Databázové fuknce
DBSUM(sloupec) - vrací součet číselných hodnot ze sloupce tabulky |
slouec: název sloupce z tabulky - MUSÍ BÝT UVEDEN V JEDNODUCHÝCH UVOZOVKÁCH! |
Je-li nalezen odpovídající sloupec v tabulce, je výsledek funkce součet číselných hodnot sloupce |
Poznámka: parametr musí být uveden v jednoduchých uvozovkách |
Příklad: DBSUM('příjem') .... výsledek je součet pole příjem DBSUM('výdej') .... výsledek je součet pole výdej |
DBMAX(sloupec) - vrací maximální hodnotu ze sloupce tabulky |
slouec: název sloupce z tabulky - MUSÍ BÝT UVEDEN V JEDNODUCHÝCH UVOZOVKÁCH! |
Je-li nalezen odpovídající sloupec v tabulce, je výsledek funkce maximální hodnota sloupce |
Poznámka: parametr musí být uveden v jednoduchých uvozovkách |
Příklad: DBMAX('příjem') .... výsledek je maximální hodnota pole příjem |
DBMIN(sloupec) - vrací minimální hodnotu ze sloupce tabulky |
slouec: název sloupce z tabulky - MUSÍ BÝT UVEDEN V JEDNODUCHÝCH UVOZOVKÁCH! |
Je-li nalezen odpovídající sloupec v tabulce, je výsledek funkce minimální hodnota sloupce |
Poznámka: parametr musí být uveden v jednoduchých uvozovkách |
Příklad: DBMIN('příjem') .... výsledek je minimální hodnota pole příjem |
DBAVG(sloupec) - vrací průměrnou hodnotu ze sloupce tabulky |
slouec: název sloupce z tabulky - MUSÍ BÝT UVEDEN V JEDNODUCHÝCH UVOZOVKÁCH! |
Je-li nalezen odpovídající sloupec v tabulce, je výsledek funkce průměrná hodnota sloupce |
Poznámka: parametr musí být uveden v jednoduchých uvozovkách |
Příklad: DBAVG('příjem') .... výsledek je průměrná hodnota pole příjem |
DBCOUNT(sloupec) - vrací počet řádků tabulky |
slouec: název sloupce z tabulky - MUSÍ BÝT UVEDEN V JEDNODUCHÝCH UVOZOVKÁCH! |
Je-li nalezen odpovídající sloupec v tabulce, je výsledek funkce počet řádků tabulky |
Poznámka: parametr musí být uveden v jednoduchých uvozovkách |
Příklad: DBCOUNT('příjem') .... výsledek je počet řádků tabulky |