Výpočetní funkce (výrazy) jsou velice silný nástroj např při hromadné úpravě hodnot potraviny.
Základní okno tvorby výrazu:
Dostupné položky tabulky - do výrazu je možné přidat hodnotu existujícího sloupce databáze potravin
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 tabulky
•Počet řádků tabulky - do výrazu přidá celkový počet řádků tabulky
Operátory - do výrazu vloží matematický operátor. (Pozn. operátor "IN" znamená "je v seznamu". Např #{Energie_kJ} IN[10,20] - hodnota Energie_kJ 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é funkce - 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)
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ů:
#{Bilkoviny_g}+#{Tuky_g} ..... sečte hodnotu z bilkovin a tuku. Pokud jsou typy hodnot číselné, bude výsledek také číslo (99+10=109). Pokud jsou typy textové (např název, poznámka apod) bude výsledek text (99+10=9910)
#{Bilkoviny_g}*0.25 .... vynásobí hodnotu bilkovin číslem 0.25
IIF(#{Bilkoviny_g} IN[10,20], 'je v seznamu', 'není v seznamu') ..... pokud je hodnota bílkovin 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"
Výsledek zobrazuje aktuální výsledek funkce.
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) 3 |
ROUNDTO (x,y) – zaokrouhlí reálné číslo na nejbližší celé číslo |
x: číslo; y: číslo; vrací celé číslo |
Funkce vrací celé číslo zaokrouhlené na počet míst dle parametru y. |
Příklad: ROUNDTO(1234567, 3) 1234000 ROUNDTO(1.234, -2) 1.23 ROUNDTO(1.235, -2) 1.24 ROUNDTO(-1.235, -2) -1.23 |
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 |