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ů:

 clip0115

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ý).

 clip0116

 

 

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 clip0117
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é.

 

Bullet  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})

 

 

 

Bullet  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

                              

 

 

Bullet  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})

                                               

 

 

Bullet  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        

                                                                                               

Bullet  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