Notia Business Server používá relační databázi Oracle, pro jejíž ovládání slouží jazyk SQL. Příkazy tohoto jazyka umožňují manipulaci s daty, modifikaci dat a také výběr z dat.
Uživatelské dotazy se sestavují v dialogu Průvodce dotazů v rámci formuláře modulu. Dotaz lze napsat přímo v jazyce SQL nebo je možno využít pomocníka QBE.
Karta QBE dialogu umožňuje tvorbu výběrová kritéria jednoduchým zadáním jedné nebo více logicky spojených podmínek.
Ve sloupci Položka se vybírá z nabídky všech položek (sloupců) aktivní tabulky. Hodnota vybraného sloupce tabulky je na základě vybraného operátoru (sloupec formuláře Operátor) porovnávána se zadanou hodnotou (sloupec formuláře Hodnota). Více výběrových podmínek je spojeno pomocí logických operátorů uvedených ve sloupci formuláře Zároveň. Setřídění výsledku lze ovlivnit nastavením hodnoty ve sloupci Třídění u příslušné položky.
Pro sestavení parametrizovaného dotazu je nutno do sloupce P? uvést Ano. Výsledkem bude dotaz, který po spuštění zobrazí dialog pro zadání všech parametrů s návěštím uvedeným ve sloupci Hodnota.
Při praktickém dotazování je vhodné QBE použít pro sestavení jednoduchých dotazů. Vzhledem k tomu, že dotaz sestavený pomocí QBE generuje standardní SQL dotaz, je možné připravený dotaz dále upravovat na kartě SQL.
Pro účely výběru dat z tabulek databáze se používá příkaz SELECT, jehož syntaxe a příklady použití jsou uvedeny dále.
Při sestavení dotazů na záložce Dotaz jsou tato omezení:
Uvedená omezení neplatí v dialogu Souvislosti, kde se výsledná tabulka sestavuje dynamicky na základě SQL dotazu.
Uvedená syntaxe je značně zjednodušená s ohledem na běžné dotazování v rámci modulů Notia Business Server.
SELECT { [tabulka.]* | {[tabulka/view.výraz [AS alias]] [, tabulka/view.výraz [AS alias]] ...}
FROM {tabulka/view} [,{tabulka/view}] ...
[WHERE podmínka]
[GROUP BY výraz [, výraz] ... [HAVING podmínka]]
[ORDER BY {výraz} [ASC | DESC] [,{výraz} [ASC | DESC]]]
Jednoduchý dotaz
V nejjednodušším případě lze příkaz Select použít pro zjištění celého obsahu tabulky
SELECT * FROM VYDANE_FAKTURY
Výsledkem tohoto dotazu je celý obsah tabulky VYDANE_FAKTURY.
Výčet zobrazených sloupců
SELECT DOKLAD, PARTNER, ZUSTATEK FROM VYDANE_FAKTURY
Výsledkem tohoto dotazu jsou všechny řádky tabulky VYDANE_FAKTURY a sloupce DOKLAD, PARTNER, ZUSTATEK.
Pojmenování sloupce
SELECT DOKLAD, PARTNER, ZUSTATEK AS "ZBÝVÁ K ÚHRADĚ" FROM VYDANE_FAKTURY
Výsledek je shodný s předchozím příkladem, přitom sloupec s hodnotou ZUSTATEK bude nazván ZBÝVÁ K ÚHRADĚ.
Kritérium výběru (klauzule WHERE)
SELECT * FROM VYDANE_FAKTURY WHERE PARTNER='NOVA'
Výsledkem jsou ty řádky z tabulky VYDANE_FAKTURY, které ve sloupci PARTNER obsahují hodnotu NOTIA.
Další možnosti použití podmínky WHERE:
SELECT * FROM VYDANE_FAKTURY WHERE PARTNER IN ('NOTIA','NOTIAIS','NOTIASV')
Vybere všechny záznamy, které ve sloupci PARTNER obsahují buď hodnotu NOTIA nebo NOTIAIS nebo NOTIASV.
SELECT * FROM VYDANE_FAKTURY WHERE PLNENI BETWEEN '01.01.2020' AND '31.01.2020'
Vybere všechny záznamy z VYDANE_FAKTURY, které mají hodnotu PLNENI mezi 1. a 31. lednem 2020. Stejný výsledek vrací dotaz:
SELECT * FROM VYDANE_FAKTURY WHERE PLNENI>='01.01.2020' AND PLNENI<='31.01.2020'
Vnořený dotaz (klauzule …IN (SELECT …))
SELECT * FROM VYDANE_FAKTURY WHERE PARTNER IN (SELECT ZKRATKA FROM PARTNERI WHERE STAT<>'ČR')
Tento dotaz vybere všechny záznamy z VYDANE_FAKTURY, kde partner je ze zahraničí (STAT není ČR).
Seřazení záznamů (klauzule ORDER BY)
SELECT * FROM VYDANE_FAKTURY WHERE ZUSTATEK>0 ORDER BY ZUSTATEK DESC, SPLATNOST ASC
Tento dotaz vybere všechny vydané faktury, jejichž neuhrazený zůstatek je větší než nula. Přitom záznamy seřadí sestupně podle výše zůstatku a v tomto rámci vzestupně podle data splatnosti
Seskupení záznamů (klauzule GROUP BY)
SELECT PARTNER, SUM(ZUSTATEK) FROM VYDANE_FAKTURY GROUP BY PARTNER
Pro každou hodnotu ve sloupci Partner se zobrazí jeden výsledný řádek. Výsledkem je seznam obsahující identifikaci dlužníka a součet zůstatku vydaných faktur, které dosud neuhradil.
Podmíněné seskupení záznamů (klauzule HAVING)
SELECT PARTNER, SUM(ZUSTATEK) FROM VYDANE_FAKTURY GROUP BY PARTNER HAVING SUM(ZUSTATEK)>5000
Rozšíření předchozího příkladu o podmínku pro seskupení (HAVING …) vede ke zobrazení předchozího výsledku pouze pro ty dlužníky, jejichž celkový dluh je větší než 5000.
Možnosti rozšíření jednoduchých výrazů
Prosté výrazy (to je např. výše použitý ZUSTATEK) lze rozšiřovat použitím aritmetických agregačních funkcí.
Aritmetické funkce
Uplatnění aritmetických funkcí je jednoduché. Uvedený příklad zobrazí všechny faktury uhrazené po splatnosti a počet dnů prodlení.
SELECT DOKLAD, PLACENI-SPLATNOST FROM VYDANE_FAKTURY WHERE PLACENI>SPLATNOST
Agregační funkce
K dispozici jsou funkce COUNT (počet), SUM (součet), MAX (maximum), MIN (minimum) a AVG (průměr). Příklad použití SUM vyplývá z příkladu seskupení záznamů, obdobně pracují i ostatní funkce. Dále je uveden dotaz pro součet všech vydaných faktur.
SELECT COUNT(*) FROM VYDANE_FAKTURY
Možnosti příkazu SELECT jsou v Notia Business Server rozšířeny o relativní parametrizaci, kdy lze absolutní hodnotu uvedenou ve výběrovém kritériu nahradit příkazem pro vyvolání dialogu zadání hodnoty.
Syntaxe:
:'?návěští dialogu pro vstup hodnoty'
V příkladu je uveden dotaz, který vybere všechny vydané faktury s datumem plnění v intervalu mezi hodnotami Od a Do, které nejsou v dotazu uvedeny a budou zadány až při jeho vyhodnocení.
SELECT * FROM VYDANE_FAKTURY WHERE PLNENI>=:'?Od' AND PLNENI<=:'?Do'
Významnou vlastností je možnost dotazy ukládat pro další použití. V praxi je proto vhodné časté požadavky převést na parametrizované dotazy a uložit je. Dotaz je možno uložit pod libovolným názvem jako globální pro všechny uživatele systému nebo jako lokální pro aktivního uživatele. Uložení se provede na záložce Dotaz tlačítkem Přidat do… Uložené dotazy jsou zobrazovány v rozevírací nabídce formulářů jednotlivých modulů, takže je lze jednoduše aktivovat.
Pro správu uložených dotazů slouží tlačítko Dotazy, které je přístupné i v dialogu Souvislosti nebo volba Úpravy - Správce dotazů.
Souvislosti umožňují zobrazení výsledku libovolného dotazu. Používají se pro zjištění hodnot a záznamů v členění a s obsahem, který standardní rozhraní modulů nenabízí.
Jednou z vlastností seznamů je možnost použití tzv. rychlého filtru. Zapíná se v jakémkoli seznamu volbou z nabídky, kterou lze vyvolat klepnutím na seznam pravým tlačítkem myši.
Po zapnutí možnosti Zobrazit rychlý filtr se do záhlaví každého sloupce seznamu doplní pole pro zápis omezující podmínky. Podmínky lze zapisovat bez operátoru (což je interpretováno jako "obsahuje řetězec") nebo s běžnými operátory (<, >, &, |, % atd.). Zapsaná podmínka se potvrdí klávesou Enter.
Lze kombinovat podmínky pro více sloupců dohromady. Důležité je, že podmínka zapsaná v rychlém filtru se doplňuje k podmínce zapsané standardním výběrem. Rychlý filtr tak umožňuje dohledávat podrobnosti v rozsáhlejších seznamech.
Pro rychlé vynulování zapsaných podmínek slouží volba Vynulovat rychlý filtr, přístupná po klepnutí pravým tlačítkem myši na seznam.
Pro skrytí rychlého filtru stačí v nabídce seznamu volbu Zobrazit rychlý filtr vypnout. Zapnutí nebo vypnutí rychlého filtru se ukládá do nastavení uživatele pro každý seznam v systému.
Klávesové zkratky pro rychlý filtr:
F11 - přesune kurzor do pole rychlého filtru, které odpovídá aktivnímu sloupci seznamu; pokud není rychlý filtr otevřen, otevře jej
Ctrl + F11 - chová se jako F11 a navíc vymaže aktuální obsah rychlého filtru.