Článek: AN0001644Aktualizováno:: 22.09.2018
V ObjectGears existuje řada možných způsobů vyhledání dat.
Rychlý filtr
Na každé třídě je možné zapnout Rychlý filtr a zobrazit pole pro filtrování v datech třídy. Jde o jednoduchý filtr s přímočarým scénářem pro uživatele. Tento filtr však neumožňuje pokročilé filtrování s kombinací různých podmínek jako ObjectGears filtr.
ObjectGears filtr
Tento filtr umožňuje použití řady podmínek filtrování v závislosti na datovém typu sloupce, kombinování podmínek pomocí operátorů AND, OR a závorek či filtrování záznamů předka dle třídy potomka. Tento filtr může ovládat uživatel nebo může být nastavován pomocí Url či skriptu (viz níže). ObjectGears filtr slouží nejen k vyhledávání dat v záznamech tříd či dotazů, ve vyhledávacích formulářích nebo v master-detail relacích, ale je použit na řadě dalších míst systému (filtrování v exportech, importech, upozorněních atd.).
Uložení a kopírování filtru
Uživatel si může filtru uložit do svého oblíbených položek (viz levé vertikální menu). Filtr lze zaslat i jinému uživateli formou Url odkazu, který obsahuje definici filtru (viz níže Url filtr). Tento Url odkaz je dostupný pod volbou Kopírovat url (viz ozubené kolečko v pravém horním rohu obrazovky).
Url filtr
Záznamy je také možné filtrovat pomocí Url filtru. Uživateli je možné nabídnout odkazy (na tlačítcích, v datech atd.), které nastaví ObjectGears filtr a zobrazí vyfiltrované záznamy.
Filtrování na seznamu záznamů
Na seznamu záznamů je možné provádět filtrování pomocí kliknutí pravým tlačítkem na myši na některou buňku zobrazeného záznamu. V kontextovém menu pak stačí jen vybrat zda se daná hodnota má vyfiltrovat nebo naopak odfiltrovat. Opakovaným klikáním na buňky v záznamech lze postupně vybrat požadované záznamy.
Toto filtrování je možné použít pro většinu sloupců (neaplikuje se např. u sloupců typu soubor nebo násobný odkaz).
Filtrování pomocí skriptu - na tlačítku nebo ve vlastnostech třídy/dotazu
Záznamy je také možné filtrovat skriptem na tlačítku či ve vlastnostech třídy (nastavení při zobrazení seznamu záznamů), které nastaví ObjectGears filtr a zobrazí vyfiltrované záznamy. Viz příklady.
Dotazy
Další možností je práce s dotazy, které přebírají proměnné (např. Id záznamu, z něhož jsou volané nebo Id uživatele, který je spouští).
Fulltextové hledání
Na textových sloupcích tříd lze zapnout fulltextové indexy a realizovat hledání zohledňující různé tvary slov dané skloňováním a časováním, specifika dělení slov či necitlivost na diakritiku.
Globální hledání
ObjectGears podporuje i globální hledání napříč různými modely, které uživatel využije v situaci, kdy přesně neví, v jakém modelu či třídě se hledaná data nacházejí. Předpokladem použití je zahrnutí konkrétního textového sloupce do globálního hledání. To provádí IT vlastník modelu. Uživatel pro hledání využije textové pole v pravém horním rohu na stránce ObjectGears. Při hledání jsou plně respektována oprávnění. Uživateli jsou zobrazeny pouze záznamy, na které má právo pro čtení v seznamu. Záznamy jsou na stránce rozděleny do sekcí podle třídy/dotazu, do níž patří. Pokud má uživatel právo na čtení detailu dat, může přejít na detail dat klikem hodnotu ve sloupci Id. Pokud je v rámci globálního hledání nalezen pouze jeden záznam, je uživateli vrácen přímo detail tohoto záznamu.
Problém při hledání dat
Při hledání dat pomocí sql nebo filtrů je třeba počítat s následujícím chováním.
Mějme třídu, ve které jsou záznamy. Následně do ní přidáme sloupec ACTIVE, který bude povinný. Výchozí hodnota sloupce bude false. Následně budeme přidávat další záznamy.
Dojde k tomu, že původní záznamy před přidáním sloupce budou mít v tomto sloupci hodnotu NULL a nové záznamy true nebo false. ObjectGears vyhodnotí hodnotu NULL ve sloupci typu Ano/Ne jako false a takto bude v GUI zobrazován.
Problém vzniká při filtrování na hodnotu false ve skriptech nebo v přímo v SQL. Pokud neprovedete po přidání nového sloupce inicializaci již existujících záznamů, musíte s tím počítat i ve filtrech a SQL. Pro ošetření v SQL můžete použít následující konstrukci:
(col is null or col = 0)
Data můžete aktualizovat několika způsoby:
- aktualizovat každý záznam zvlášť
- hromadnou aktualizací všech záznamů
- aktualizovat skriptem
- aktualizovat updatem v databázi