1. Datový typ OG - DataRowFilter

    Článek: AN0001681Aktualizováno:: 18.03.2020

    Objekt slouží pro hledání záznamů ve třídách a dotazech. Pro vyhledání stačí zadat požadované podmínky a systém ObjectGears načte záznamy.

    Vlastnosti objektu

    Název Popis
    int? Id ID záznamu.
    List Ids Seznam povolených ID záznamů.
    int? IdMin Min. ID záznamu (včetně).
    int? IdMax Max. ID záznamu (včetně).
    int? ArchiveId Id archivního záznamu.
    int ParentId Id třídy nebo dotazu, ze kterého chceme načíst záznamy.
    ClassDefEntityType ParentColumnType Typ určující, zda ParentId je třída nebo dotaz.
    bool Filter_BindOnlyShortDescription Příznak pro zrychlene načítání dat z databáze. Pokud načítáte záznamy s odkazy do číselníků a stačí vám jen načíst Id a ShortDescription, pak zde zadejte True. Nastavení způsobí, že se odkazovaná entita nebude načítat celá, což je zrychlí vrácení výsledků.
    bool Filter_Archive Příznak, zda se mají načítat záznamy z archivu. Nelze kombinovat načítání dat z provozní a archivní tabulky v jednom volání objektu.
    object GetColumnData(int columnId) Funkce vrátí hodnotu pro zadané ID sloupce. Pokud není zadána žádná hodnota, je vráceno NULL.
    object GetColumnData(string columnCode) Funkce vrátí hodnotu pro zadaný kód sloupce. Pokud není zadána žádná hodnota, je vráceno NULL.
    void SetColumnData(int columnId, object data) Metoda nastaví podmínku pro konkrétní sloupec. Hodnotu data zadávejte ve správném datovém typu vůči typu sloupce.
    void SetColumnData(string columnCode, object data) Metoda nastaví podmínku pro konkrétní sloupec. Hodnotu data zadávejte ve správném datovém typu vůči typu sloupce. Kód zadejte ve tvaru 'kod' nebo 'kod_predka.kod_sloupce' pro sloupce ze třídy předka.
    object this[int columnId] Funkce nastaví nebo vrátí hodnotu pro zadaný sloupec.
    object this[string columnCode] Funkce nastaví nebo vrátí hodnotu pro zadaný sloupec.
    bool Filter_LoadFiles Příznak zda se mají načítat informace o sloupcích typu Soubor. Pokud vaše třída nebo dotaz obsahuje tento typ sloupců, ale nepožadujete načíst tyto informace, pak nastavte False.
    ConditionBase Condition Vlastnost pro složitější zadání podmínek vyhledávání.
    string Filter_Sort Specifikace řazení nalezených záznamů.
    int? Filter_StartRowIndex Pořadová hodnota pro první vrácený záznam. Všechny záznamy jsou očíslovány a touto vlastností můžete určit, který záznam bude jako první vrácen. Všechny předchozí budou z výsledku zahozeny.
    int? Filter_MaximumRows Max. počet vrácených záznamů. Vlastnost můžete použít spolu s Filter_StartRowIndex pro stránkování záznamů.
    bool Filter_OnlyActive Příznak, zda se mají vrátit pouze aktivní (nesmazané) záznamy. Sloupec Deleted je prázdný u aktivních záznamů.
    bool Filter_LoadSubEntity Příznak, zda se mají načítat i "podentity". To jsou sloupce typu odkaz do číselníku s vazbou M:N. Pro rychlejší vrácení výsledků nemusíte tyto sloupce načítat. Pokud však hodnoty potřebujete, pak vlastnost nastavte na True.
    bool WriteSqlToLog Příznak, zda se má výsledný SQL dotaz do databáze zapsat do protokolu událostí.
    void AddAndCon(ConditionBase c) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem AND.
    void AddAndCon(ConditionBase c, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem AND. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddAndCon(ConditionBase c1, ConditionBase c2, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem AND. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddAndCon(ConditionBase c1, ConditionBase c2, ConditionBase c3, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem AND. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddAndCon(ConditionBase c1, ConditionBase c2, ConditionBase c3, ConditionBase c4, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem AND. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddOrCon(ConditionBase c) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem OR. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddOrCon(ConditionBase c, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem OR. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddOrCon(ConditionBase c1, ConditionBase c2, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem OR. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddOrCon(ConditionBase c1, ConditionBase c2, ConditionBase c3, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem OR. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.
    void AddOrCon(ConditionBase c1, ConditionBase c2, ConditionBase c3, ConditionBase c4, bool addEnvelope) Metoda přidá k existující podmínce Condition další podmínku. Spojí je operátorem OR. Parametr addEnvelope při TRUE obalí nové podmínky závorkou.

    Všechny podmínky zadané do filtru jsou ve vzájemném vztahu AND. Výjimkou jsou podmínky zadané pomocí vlastnosti Condition. V ní si podmínky můžete stanovit libovolně.

    Volbu WriteSqlToLog použijte, pokud vytváříte složitý filtr, který Vám nefunguje. Při nastavení této vlastnosti je výsledný vygenerovaný dotaz do databáze uložen do protokolu událostí, kde jej můžete prostudovat a nalézt příčinu problému. Do logu se zapisují i parametry, se kterými byl příkaz spuštěn.

    Nastavení hodnot pro sloupce

    Filtrování pro sloupce se nastavuje metodou SetColumnData. První parametr je ID sloupce a druhý je jeho požadovaná hodnota. Při tomto zadání se vždy hledá přesná shoda, kromě textů (viz. dále).

    Pro každý typ sloupce je třeba zadat data ve správném datovém typu. Tabulka popisuje povolené datové typy pro sloupce:

    Typ sloupce Povolené hodnoty
    Krátký text (50 znaků) string
    Střední text (255 znaků) string
    Dlouhý text string
    Celé číslo int
    Desetinné číslo double
    Datum a čas datetime
    Příznak Ano/Ne bool
    Soubor Není podporováno
    Odkaz do číselníku int, List (bez ohledu na to, zda je odkaz jednoduchý nebo násobný)
    Odkaz na uživatele int, List (bez ohledu na to, zda je odkaz jednoduchý nebo násobný)
    Guid string
    Odkaz na třídu Není podporováno
    Barva int
    Obrázek na serveru string

    Filtrování textů

    Při zadání filtrování textu pro textový sloupec se používá několik pravidel v závislosti na použití řídících znaků. Následující tabulka uvádí všechny možnosti zadání. Výchozí stav hledání je popsán na prvním řádku tabulky.

    Zadání Podmínka Popis
    kolo sloupec like '%kolo%' Text bude hledán pomocí operátoru LIKE.
    "kolo" sloupec = 'kolo' Hledá se přesná shoda se zadáním.
    "kolo%" sloupec like 'kolo%' Text bude hledán pomocí operátoru LIKE. Hledán bude text, který začíná "kolo".
    "ko_lo" sloupec like 'ko_lo' Text bude hledán pomocí operátoru LIKE. Hledán bude text, který začíná "ko", pak následuje jeden znak a končí na "lo".
    "ko%lo" sloupec like 'ko%lo' Text bude hledán pomocí operátoru LIKE. Hledán bude text, který začíná "ko" a končí na "lo". Mezi těmito texty může být libovolný počet dalších znaků.

    Význam řídících znaků:

    Znak Popis
    " Uvozovky

    Uvozovky zadané na začátku a konci hledaného textu říkají, že hledáte přesnou shodu.

    Pokud však v hledaném textu zadáte znak procent nebo podtržítka, pak se hledání provádí pomocí operátoru LIKE, ale dle vaší "masky".

    % Procento Znak zastupuje libovolný počet jiných znaků.
    _ Podtržítko Znak zastupuje pouze jeden libovolný znak.

    Řazení záznamů

    Při řazení záznamů se používá vlastnost Filter_Sort. Řazení lze zadat pro více sloupců, jednotlivé sloupce oddělujte čárkou. Každý sloupec lze řadit vzestupně nevo sestupně (za název sloupce se přitá text DESC).

    Názvy sloupců se zadávají tak, jak jsou definovány v objektu DataRow. Například: Id, Created...

    Pro řazení sloupců třídy nebo dotazu použijte následující formát colxxx, kde xxx je ID řazeného sloupce.

    Pro řazení dle krátkého popisu, použijte formát sdxxx, kde xxx je ID třídy nebo dotazu.

    Příklad řazení:

    sd86,col123 desc,created

     Pro řazení lze použít přímo kódy sloupců pomocí příkazu CODE:. Není pak třeba vytvářet názvy typu  col123.

    CODE:name,title desc

    Datové typy pro filtrování sloupců

    Pro filtrování podle jednotlivých sloupců můžete zadat různé datové typy podle druhu sloupce. Tabulka níže ukazuje, jaké typy můžete použít:

    Typ sloupce Datový typ
    Text string
    Guid string
    Celé číslo

    int?

    double

    EntityBase (EntityInfo, PersonInfo)

    Barva

    int?

    double

    EntityBase (EntityInfo, PersonInfo)

    Desetinné číslo double
    Datum DateTime
    Příznak Ano/Ne bool
    Classlink

    int

    double

    EntityBase (EntityInfo, PersonInfo)

    List<int>

    EntityInfoList

    XClasslink

    EntityInfo

    EntityInfoList

     

×