1. Základní informace
- Databázový dotaz definuje zdroj dat načítaných z databáze, který je následně používán v ovládacích prvcích editačních formulářů, nahlížecích stránek, portletech a ve skriptech.
- Databázový dotaz určuje, jaká množina databázových záznamů bude načtena a předána k dalšímu zpracování nebo vizualizaci.
- Databázový dotaz je samostatný konfigurovatelný objekt aplikace, který zapouzdřuje logiku výběru dat z databáze a odděluje ji od vizuálních ovládacích prvků.
- Výsledkem databázového dotazu je množina dat, která je předána ovládacím prvkům nebo skriptům k vyhodnocení či zobrazení.
1.1. Běžný dotaz
- Běžný dotaz se používá u všech ovládacích prvků, které jako zdroj dat využívají přímo databázová data.
- Běžný dotaz je výchozím typem v návrháři databázových dotazů.
- Při sestavování výsledného SQL dotazu používá pouze klauzule „SELECT“, „FROM“, „JOIN“, „WHERE“ a „ORDER BY“.
- Běžný dotaz nepoužívá klauzuli „GROUP BY“ a neobsahuje žádné agregační funkce.
1.2. Agregační dotaz
- Agregační dotaz se používá u nahlížecích tabulek a grafů, které zobrazují agregovaná data.
- Agregační dotaz pracuje s klauzulí „GROUP BY“ a agregačními funkcemi nad databázovými sloupci.
- Agregační dotaz je definován v návrháři databázových dotazů:
- zaškrtnutím volby „Agregační dotaz“,
- seznamem seskupovacích sloupců, které se objeví ve výsledném SQL dotazu v klauzuli „GROUP BY“.
- Jako agregační se dotaz sestaví, jen pokud obsahuje alespoň jeden agregovaný, informativní nebo výrazový sloupec; se samotnými seskupovacími sloupci se načte jako běžný dotaz.
- Podporované způsoby seskupování zahrnují:
- běžné seskupení podle sloupce („GROUP BY ng_“),
- seskupení podle hodiny ve dni,
- seskupení podle hodiny,
- seskupení podle hodiny a minuty,
- seskupení podle dne,
- seskupení podle týdne,
- seskupení podle měsíce,
- seskupení podle kvartálu,
- seskupení podle roku.
- Agregační dotaz dále obsahuje:
- seznam agregovaných sloupců, které se ve výsledném SQL dotazu objeví ve spojení s funkcemi „COUNT“, „SUM“, „AVG“, „MAX“ a „MIN“, s možností použití podmíněné logiky pomocí „CASE WHEN“,
- seznam informativních sloupců, které se ve výsledném SQL dotazu objeví jako konstanty nebo vypočtené hodnoty a jsou následně vyhodnoceny lexikálním analyzátorem,
- seznam sloupců, podle kterých je možné filtrovat data v nahlížecí tabulce nebo grafu,
- seznam hlaviček pro seskupování sloupců v nahlížecí tabulce,
- seznam barev použitých pro vykreslení jednotlivých datových řad v grafu.
- Jednotlivé sloupce agregačního dotazu používají následující syntaxi názvu:
„název@matematický_výraz@zobrazovaná_hodnota@podmínka“.
- Název určuje popisek sloupce zobrazovaný v nahlížecí tabulce nebo grafu.
- Matematický výraz je volitelný a používá se u sloupců typu „Výraz, formát dle“.
- Zobrazovaná hodnota je volitelná a umožňuje nahradit vypočtenou hodnotu textem nebo skrýt celý sloupec pomocí hodnoty „@@“.
- Podmínka je volitelná a umožňuje omezit zobrazení řádků výsledné množiny dat. Podmínka filtruje celé řádky výsledku (například „>5“ ponechá jen řádky, v nichž je hodnota sloupce větší než 5) a součty v zápatí se počítají jen ze zobrazených řádků.
- Příklady názvů sloupců:
- „Součet prvního a druhého sloupce@#c0#+#c1#“,
- „Součet prvního a druhého sloupce@#c0#+#c1#@Skrytá hodnota“,
- „Kumulativní součet shora@+1“,
- „Kumulativní součet zdola@-1“,
- „Kumulativní součet prvního a druhého sloupce@+1#c0# + #c1#“,
- „Součet hodnot větších než 5@@@>5“,
- „Sloupec@+sum“,
- „Sloupec@-sum“.
- Speciální hodnoty výrazu:
- „+1“ na začátku výrazu – kumulativní součet shora: hodnota každého řádku se přičte k součtu všech předchozích řádků; při změně hodnoty seskupovacího sloupce začíná kumulace znovu,
- „-1“ na začátku výrazu – kumulativní součet zdola,
- „++1“ a „--1“ na začátku výrazu – kumulativní součet, který navíc započítá hodnoty z období před začátkem časového úseku,
- „+sum“ na konci výrazu – hodnota sloupce se sčítá do řádku součtů,
- „-sum“ na konci výrazu – řádek součtů zůstane u sloupce prázdný.
- Proměnné „#c0#“, „#c1#“ atd. ve výrazu odkazují na sloupce výsledku v tomto pořadí: seskupovací sloupce, sloupec seskupený podle data a pak ostatní sloupce. Výraz může použít hodnotu jiného výrazového sloupce, jen pokud je tento sloupec uveden dříve; chyba ve výrazu dá hodnotu 0.
- Hlavičky agregačního dotazu používají syntaxi:
„počet_sloučených_buněk@název_hlavičky“.
- Příklady hlaviček:
- 1. řádek: „5@X;1@Y“,
- 2. řádek: „2@A;3@B;1@C“.
1.3. Vnořené záznamy
- Vnořený záznam je databázový záznam přidružený ke svému rodičovskému záznamu pomocí cizích klíčů „pid“ a „pform“.
- Tyto cizí klíče jsou součástí každé databázové tabulky a určují ID rodičovského záznamu a ID editačního formuláře, ve kterém se rodičovský záznam nachází.
- Odkazy pomocí „pid“ a „pform“ mohou směřovat jak do jiné databázové tabulky, tak i do stejné tabulky (rekurzivní struktury, např. ovládací prvek „Tree“).
- Hodnoty „pid“ a „pform“ jsou vyplňovány automaticky podle kontextu, ze kterého byl nový záznam vytvořen.
- Při vytvoření záznamu z nahlížecí stránky mají hodnotu „0“.
- Při vytvoření záznamu z jiného databázového záznamu jsou nastaveny podle ID rodiče a jeho formuláře.
- Použití sloupce „pform“ je obvykle minimální a uplatňuje se zejména v případech, kdy jedna tabulka slouží více rodičovským formulářům.
- Sloupce „pid“ a „pform“ nejsou ve výchozím stavu indexované. Při jejich aktivním používání je nutné indexování zapnout v nastavení editačního formuláře.
- Nahlížecí tabulky v editačních formulářích obsahují volbu „Zobrazit pouze vnořené záznamy“, která automaticky doplňuje podmínku „PID = ID aktuálního záznamu“. Hodnota „pform“ se přitom netestuje a u nového, dosud neuloženého záznamu tabulka nezobrazí nic.
- Nahlížecí tabulky na nahlížecích stránkách obsahují volbu „Skrýt vnořené záznamy“, která automaticky doplňuje podmínku „PID = 0“.
1.4. Omezující podmínky dotazu
- Databázový dotaz může obsahovat libovolné množství omezujících podmínek, které následují za klauzulí „WHERE“.
- Jednotlivé podmínky mohou být kombinovány pomocí logických operátorů „AND“ a „OR“ a seskupovány pomocí levých a pravých závorek.
- Výsledná podmínka v jazyce SQL je sestavena automaticky na základě seznamu podmínek definovaných v grafickém návrháři databázových dotazů.
- Podmínka testující (ne)vyplněnost hodnoty musí u sloupců datového typu „String“ počítat s oběma podobami prázdné hodnoty – s textovým řetězcem nulové délky i s databázovou hodnotou „null“. Samotný operátor „není definováno“ zachytí pouze hodnotu „null“ – prázdný řetězec nezachytí.
- Taková podmínka je složená: levá_strana rovná se „“ nebo levá_strana není definováno. V jazyce SQL: levá_strana = '' OR levá_strana IS NULL.
- U ovládacích prvků typu „ForeignKey“, „File“ a „Image“ analogicky: levá_strana rovná se „0“ nebo levá_strana není definováno. V jazyce SQL: levá_strana = 0 OR levá_strana IS NULL.
- Detailní popis testu na (ne)vyplněnou hodnotu je uveden v samostatné příručce Práce s proměnnými ve skriptu.
- Operátory „nerovná se“, „neobsahuje“, „nezačíná“ a „nekončí“ nevrátí záznamy, které mají ve sloupci hodnotu „null“. Podmínka „není v dotazu“ nevrátí nic, pokud vnořený dotaz vrací hodnotu „null“.
- Je-li hodnotou podmínky proměnná a proměnná je prázdná, podmínka se nevynechá, ale porovná sloupec s prázdnou hodnotou – u textu s prázdným řetězcem, u čísla s nulou; podmínka na datum v takovém případě nevrátí nic.
- Hodnota podmínky může obsahovat speciální hodnoty:
- „#random#“ – náhodné číslo od 1 do nejvyššího ID záznamu v tabulce, typicky v podmínce „ID = #random#“; číslo nemusí odpovídat existujícímu záznamu,
- „#dayrandom#“ – totéž, ale číslo se mění jednou za den a je stejné pro všechny uživatele,
- „#weekend#“ – vybere záznamy, jejichž datum připadá na sobotu nebo neděli.
- V podmínkách dotazu lze používat následující rozšířené zápisy, které jsou návrhářem automaticky interpretovány do odpovídající SQL syntaxe:
- Datové typy „Integer“ a „Long“ umožňují zápis ve tvaru „levá_strana = 1;2;3“. Tento zápis je interpretován jako „levá_strana IN (1, 2, 3)“.
- Datový typ „String“ umožňuje zápis ve tvaru „levá_strana = (array)A;B;C“. Tento zápis je interpretován jako „levá_strana IN ('A', 'B', 'C')“.
- Pokud je na levé straně podmínky použit ovládací prvek typu „MultiListBox“ (hodnoty oddělené tabulátorem) a na pravé straně je textová konstanta, je podmínka interpretována jako:
- „JoinText(levá_strana, pravá_strana)“ u databáze Firebird,
- „dbo.JoinNtext(levá_strana, pravá_strana)“ u databáze Microsoft SQL Server.
- Výsledný SQL dotaz vyhodnotí všechny záznamy, které mají ve sloupci typu „MultiListBox“ uloženou alespoň jednu hodnotu shodnou s textovou konstantou na pravé straně podmínky.
- Pokud je na levé i pravé straně podmínky použit ovládací prvek typu „MultiListBox“, je podmínka interpretována stejným způsobem pomocí funkcí „JoinText“ (Firebird) nebo „dbo.JoinNtext“ (MSSQL). Výsledný SQL dotaz vyhodnotí všechny záznamy, u nichž existuje alespoň jedna shodná hodnota v obou sloupcích.
- Datový typ „String“ dále umožňuje zápis ve tvaru „levá_strana = (mlb)A#tab#B#tab#C“. Tento zápis je interpretován jako:
- „JoinText2(levá_strana, 'A B C')“ u databáze Firebird,
- „dbo.JoinNtext(levá_strana, 'A B C')“ u databáze Microsoft SQL Server.
- Výsledný SQL dotaz vyhodnotí všechny záznamy, které mají ve sloupci s tabulátorem oddělenými hodnotami uloženou alespoň jednu hodnotu obsaženou v textové konstantě na pravé straně podmínky.
- Podmínku dotazu je možné definovat také přímo pomocí SQL syntaxe.
- V takovém případě může být levá strana podmínky včetně operátoru libovolná.
- Pravá strana podmínky musí vždy začínat prefixem „OK#crlf#“, za kterým následuje vlastní SQL podmínka.
- Přímá SQL podmínka vznikne jen tehdy, když prefix „OK#crlf#“ zapíše administrátor přímo do hodnoty podmínky nebo když podmínku vrátí funkce zapsaná v hodnotě podmínky (například „ngef(...)“ nebo „EQUALS(...)“). Hodnota dosazená z proměnné (například „#ng_poznamka#“ nebo „#A#“) se vždy vloží jako literál, i když začíná textem „OK“ a zalomením řádku.
- Proměnné použité uvnitř přímé SQL podmínky se neescapují – hodnotu, kterou může vyplnit uživatel, je nutné obalit funkcí „FORMATSTRINGSQL“, „FORMATINTSQL“ nebo „FORMATDATESQL“.
- Ve složeném filtru uživatele se přímá SQL podmínka nepoužije.
- Příklady přímé SQL definice podmínky:
- OK#crlf#0=0
- OK#crlf#0=1
- OK#crlf#EQUALS(#ng_tb#"0=0,ng_tb = FORMATSTRINGSQL(#ng_tb#))
- OK#crlf#EQUALS(#ng_tb#"0=1,ng_tb = FORMATSTRINGSQL(#ng_tb#))
1.5. Připojení (joiny)
- Databázový dotaz může obsahovat libovolné množství připojení, která jsou sestavená pomocí klauzule „JOIN“.
- Výsledný tvar připojení v jazyce SQL je sestaven automaticky podle seznamu připojení nastavených v grafickém návrháři.
- Připojení může být definováno také pomocí SQL syntaxe. Levá strana podmínky připojení může být libovolná, pravá strana podmínky připojení musí začínat slovem „OK#crlf#“, a za ní musí následovat znění připojení pomocí jazyka SQL, například:
- OK#crlf#INNER JOIN ng_abc J1 ON J1.pid = ng_formular.id
- Definice připojení musí respektovat používané aliasy, takže první připojení se musí jmenovat J1, druhé J2 atd.
- Definice připojení musí respektovat název zdrojové databázové tabulky.
- Stejně jako u podmínky vznikne přímé SQL připojení jen z hodnoty, kterou zapíše administrátor, nebo kterou vrátí funkce; hodnota dosazená z proměnné se vždy vloží jako literál.
2. Seznam záložek v dialogu nastavení databázového dotazu
- Obecné – Nastavení obecných vlastností
- Podmínky – Definice omezujících podmínek
- Připojení – Definice připojení – joinů
- Sloupce – Definice sloupců agregační tabulky
- Hlavičky – Definice hlaviček agregační tabulky
- Barvy – Definice barev grafu
- Ostatní – Nastavení ostatních vlastností
2.1. Záložka „Obecné“
2.1.1. Databázová tabulka
- Výběr editačního formuláře, z jehož databázové tabulky budou načteny záznamy uložené v databázi.
- Změnou databázové tabulky u uloženého dotazu vznikne nový databázový dotaz; původní zůstane v databázi beze změny.
- U ovládacích prvků, které z dotazu načítají hodnotu (například „ComboBox“, „ForeignKey“ nebo krok skriptu), se pod databázovou tabulkou zobrazuje pole „Sloupec“ – výběr sloupce, jehož hodnoty dotaz vrací.
2.1.2. Možnosti
- Agregační dotaz – Zaškrtnutí tohoto pole určuje, zda má být výsledkem dotazu agregovaná množina dat sestavená pomocí grupování.
2.1.3. Setřídit podle
- Výběr sloupce, podle kterého budou databázové záznamy seřazeny, včetně způsobu řazení – vzestupně (ASC) nebo sestupně (DESC).
- Volitelný výběr druhého sloupce, podle kterého budou databázové záznamy seřazeny, včetně způsobu řazení – vzestupně (ASC) nebo sestupně (DESC).
2.1.4. Barva podle
- Výběr sloupce, který určuje, zda a podle jakého sloupce se bude v nahlížecí tabulce zobrazovat u každého záznamu barevný obdélníček.
- Volba „Obarvit text“ obarví barvou záznamu navíc i jeho text; barevný obdélníček zůstává zobrazen.
- U ovládacího prvku „ForeignKey“ se pole jmenuje „Hodnota uložená v databázi“ a určuje sloupec, jehož hodnota se ukládá do cizího klíče místo ID záznamu. Při změně tohoto pole u existujícího dotazu nabídne dialog převod již uložených hodnot, který přepíše hodnoty cizího klíče v celé tabulce i v její historii změn.
2.1.5. Časový úsek podle
- Výběr sloupce, který určuje, zda a podle jakého sloupce se bude nad nahlížecí tabulkou zobrazovat filtr pro výběr časového úseku „od-do“.
- Časový úsek se uplatní v ovládacích prvcích se zobrazeným filtrem „od-do“. V portletu, v ovládacím prvku „LiteDataGrid“ a ve skriptu se neuplatní vůbec – dotaz tam načte záznamy bez omezení časovým úsekem.
2.1.6. Od
- Výchozí hodnota začátku časového úseku, která se předvyplní do filtru „od-do“ nad nahlížecí tabulkou.
- Pokud pole není vyplněno, použije se výchozí hodnota „měsíc nazpět“, tedy dnešní datum mínus jeden měsíc. Časový úsek je tedy omezen i tehdy, když pole zůstane prázdné – prázdná hodnota neznamená neomezené načítání dat.
- Hodnotu je možné zadat také pomocí proměnných, například „#today#“. Proměnné jsou vyhodnoceny při otevření ovládacího prvku.
2.1.7. Do
- Výchozí hodnota konce časového úseku, která se předvyplní do filtru „od-do“ nad nahlížecí tabulkou.
- Pokud pole není vyplněno, použije se výchozí hodnota „poslední den v roce“, tedy 31. prosinec aktuálního roku. Časový úsek je tedy omezen i tehdy, když pole zůstane prázdné – prázdná hodnota neznamená neomezené načítání dat.
- Hodnotu je možné zadat také pomocí proměnných, například „#today#“. Proměnné jsou vyhodnoceny při otevření ovládacího prvku.
2.1.8. Možnosti
- Hodnoty „od“ a „do“, které si uživatel ve filtru naposledy zvolil, jsou evidovány samostatně pro každého uživatele a každý databázový dotaz. Následující dvě pole určují, zda se tyto uložené hodnoty při dalším otevření ovládacího prvku obnoví, nebo zda se použije výchozí hodnota.
- Vyplnit výchozí hodnotu „Od“ při každém otevření ovládacího prvku – Zaškrtnutí tohoto pole určuje, že se naposledy zvolená hodnota „od“ neobnovuje a při každém otevření ovládacího prvku se použije výchozí hodnota. Ve výchozím nastavení není toto pole zaškrtnuté, takže se naposledy zvolená hodnota obnovuje.
- Vyplnit výchozí hodnotu „Do“ pouze při prvním otevření ovládacího prvku – Zaškrtnutí tohoto pole určuje, že se naposledy zvolená hodnota „do“ obnovuje a výchozí hodnota se použije pouze při prvním otevření ovládacího prvku. Ve výchozím nastavení není toto pole zaškrtnuté, takže se výchozí hodnota použije při každém otevření ovládacího prvku.
- Uložené hodnoty se obnovují pouze na nahlížecí stránce, nikoli v editačním formuláři, a neobnovují se anonymnímu uživateli.
- Změna výchozí hodnoty „Od“ v návrháři smaže naposledy zvolenou hodnotu „od“ všem uživatelům; změna řazení v návrháři přepíše uložené řazení všem uživatelům.
2.1.9. Zobrazit dotaz
- Tlačítko „Zobrazit dotaz“ – Zobrazí část databázového dotazu sestavenou z neuložených hodnot dialogu: databázovou tabulku, připojení a podmínky („SELECT * FROM ... JOIN ... WHERE ...“). Vybírané sloupce, řazení, omezení počtu záznamů ani časový úsek neobsahuje.
2.2. Záložka „Podmínky“
- Definice omezujících podmínek dotazu, které následují za klauzulí „WHERE“ databázového dotazu.
2.2.1. Přidat podmínku
- Pomocí tlačítka „Přidat podmínku“ je možné přidat novou podmínku dotazu.
2.3. Záložka „Připojení“
- Definice připojení, které jsou sestaveny pomocí klauzule „JOIN“ databázového dotazu.
2.3.1. Přidat připojení
- Pomocí tlačítka „Přidat připojení“ je možné přidat nové připojení dotazu.
2.3.2. Aktualizovat
- Pomocí tlačítka „Aktualizovat“ se aktualizuje seznam sloupců na levé i pravé straně podmínky na základě vybrané přijoinované tabulky.
2.4. Záložka „Sloupce“
- Pouze při zaškrtnutém poli „Agregační dotaz“
- Definice sloupců výsledné agregační tabulky.
2.4.1. Přidat sloupec
- Pomocí tlačítka „Přidat sloupec“ je možné přidat nový sloupec výsledné agregační tabulky.
2.5. Záložka „Hlavičky“
- Pouze při zaškrtnutém poli „Agregační dotaz“ u ovládacího prvku „DataGrid“ nebo „LiteDataGrid“
- Definice hlaviček výsledné agregační tabulky.
2.5.1. Přidat hlavičku
- Pomocí tlačítka „Přidat hlavičku“ je možné přidat novou hlavičku výsledné agregační tabulky.
2.5.2. ?
- Pomocí tlačítka „?“ je možné zobrazit nápovědu k syntaxi hlaviček.
2.6. Záložka „Barvy“
- Pouze u ovládacího prvku „Chart“
- Definice barev, které budou použity na vykreslení jednotlivých sloupců grafu.
2.6.1. Přidat barvu
- Pomocí tlačítka „Přidat barvu“ je možné přidat novou barvu grafu.
2.7. Záložka „Ostatní“
2.7.1. Název šablony
- Název šablony slouží pro pojmenování databázového dotazu s možností jeho zkopírování při vytváření dalších databázových dotazů se stejnou zdrojovou databázovou tabulkou.
- Při vytváření nového databázového dotazu jsou všechny dostupné šablony k dispozici v rozbalovacím seznamu šablon vedle tlačítek dialogu. Po vybrání šablony se parametry databázového dotazu předvyplní údaji ze zvolené šablony, včetně zdrojové databázové tabulky; nepřebírá se omezení počtu záznamů, externí funkce ani poznámky. Vnořené dotazy šablony se zkopírují do databáze hned při výběru šablony.
- Seznam všech databázových dotazů, které jsou označené jako šablony, je možné zobrazit pomocí reportu. Detailní popis reportů je uveden v samostatné příručce Reporty.
2.7.2. Poznámky
- Poznámky slouží pro zadání libovolného textu určeného pro správce aplikace.
2.7.3. Načíst pouze prvních
- Omezení maximálního počtu záznamů načtených databázovým dotazem resp. ekvivalent SQL příkazu TOP() nebo FIRST().
- U agregačního dotazu se v SQL neuplatní – omezí jen počet zobrazených nebo exportovaných řádků.
- Při současném odstranění duplicitních záznamů se duplicity odstraňují až z načtených řádků, takže výsledek může mít méně záznamů, než je nastavený počet.
2.7.4. Odstranit záznamy s duplicitním
- Výběr sloupce, podle kterého budou vyhodnoceny duplicitní řádky v načtené množině dat, a tyto řádky budou následně z této množiny odstraněny.
- Duplicitní řádky se odstraňují po načtení dat z databáze; ponechá se první výskyt v aktuálním řazení a porovnání rozlišuje velikost písmen. Řádky s hodnotou „null“ se neodstraňují. U agregačního dotazu se pole nezobrazuje.
2.7.5. Možnosti
- ngef(NETGenium.DataTable)
- Výsledkem databázového dotazu je vždy načtená množina dat z databáze, dočasně uložená v objektu typu „DataTable“. Tato množina dat je následně předána jednotlivým ovládacím prvkům za účelem jejího vyhodnocení nebo vizualizace.
- Zaškrtnutí tohoto pole určuje, zda má být před samotným předáním objektu „DataTable“ ovládacímu prvku spuštěna externí funkce, která má možnost měnit vlastnosti tohoto objektu – přidávat řádky, měnit hodnoty v jednotlivých sloupcích, případně řádky odstraňovat.
- V cloudové variantě NET Genium Online se toto pole nezobrazuje — externí funkce v cloudu nejsou k dispozici.
2.7.6. Logování
- Pomocí tlačítka „Logování“ se zobrazí detailní report s jednotlivými záznamy volání databázových dotazů a údaji o
- datumu a času spuštění dotazu,
- uživateli, který dotaz spustil,
- času zpracování dotazu v milisekundách,
- počtu vrácených záznamů a
- konkrétním SQL dotazu.
- Počet záznamů je ve výchozím nastavení omezen na 100 záznamů. Tento počet je možné ručně zvýšit nebo snížit změnou parametru „maxrows“ v URL reportu.
2.7.7. Sledování změn
- Tlačítko „Sledování změn“ – Zobrazení detailního reportu s historií změn definice databázového dotazu: kdo a kdy dotaz v návrháři uložil a jak dotaz v tu chvíli vypadal. Změny provedené přes MCP server nebo importem aplikace se do historie nezapisují.
2.8. Tlačítka „Uložit“, „Smazat“ a „Zavřít“
- Tlačítko „Uložit“ – Uložení změn v nastavení databázového dotazu. Změna se projeví okamžitě, i když se nastavení nadřazeného ovládacího prvku zavře bez uložení. Tlačítko je neaktivní, pokud administrátor nesmí měnit aplikaci, do které dotaz patří (omezení administrátorského režimu aplikační skupiny).
- Tlačítko „Smazat“ – Odpojení databázového dotazu od ovládacího prvku. Záznam dotazu v databázi zůstane zachován.
- Tlačítko „Zavřít“ – Zavření dialogu s nastavením databázového dotazu bez uložení změn.