1. Datový typ OG - DataRow

    Článek: AN0001678Aktualizováno:: 09.10.2021

    Objekt reprezentuje jeden záznam ve třídě nebo dotazu. V příslušném kontextu (např. v pravidle) lze použít i jeho instance OGActualDatarow či OGOldDatarow.

    Vlastnosti objektu

    Název Popis
    int Id Id záznamu.
    int ParentId Id třídy nebo dotazu.
    ClassDefEntityType ParentType Typ vlastníka záznamu - třída nebo dotaz.
    string ShortDescription Krátký popis záznamu.
    string FullId Úplné Id záznamu. Obsahuje Id třídy/dotazu a Id záznamu. Toto Id se používá jako identifikátor v URL.
    bool IsNew Příznak, zda je záznam nový (neuložený). Pokud je Id = 0, pak je záznam neuložený.
    bool IsDeleted Příznak, zda je záznam smazaný. Pokud je ve sloupci Deleted hodnota, pak je záznam smazaný.
    Auditní vlastnosti
    string Creator Účet uživatele, který záznam vytvořil.
    DateTime? Created Datum vytvoření záznamu.
    DateTime? Modified Datum poslední změny záznamu.
    string Modifier Účet uživatele, který záznam naposled změnil.
    DateTime? Deleted Datum smazání záznamu.
    string Deleter Účet uživatele, který záznam smazal.
    int? CreatedDataSourceId Id typu zdroje dat při vytvoření záznamu..
    string CreatedDataSourceText Název typu zdroje dat při vytvoření záznamu.
    int? ModifiedDataSourceId Id typu zdroje dat při poslední změně záznamu.
    string ModifiedDataSourceText Název typu zdroje dat při poslední změně záznamu.
    int? DeletedDataSourceId Id typu zdroje dat při smazání záznamu.
    string DeletedDataSourceText Název typu zdroje dat při smazání záznamu.
    int? ArchiveId Id záznamu v archivní tabulce.
    string ArchiveUser Účet uživatele, který záznam archivoval (provedl změnu nebo smazání záznamu v provozní tabulce).
    DateTime? ArchiveDate Datum archivace záznamu.
    Ostatní funkce a vlastnosti
    void AddNewComment(int columnClassDefId, string newComment, DataRow drOld) Metoda přidá nový komentář do sloupce typu Dlouhý text s nastavenou vlastností LongTextIsCommented = true.
    void ClearColumn(int columnId) Metoda nastaví hodnotu pro sloupec na NULL. Po uložení do databáze se sloupec v databázi vymaže.
    void ClearColumn(string code) Metoda nastaví hodnotu pro sloupec na NULL. Po uložení do databáze se sloupec v databázi vymaže.
    ColumnClassDef FindColumn(string code) Funkce najde sloupec ve třídě, ke které záznam patří (podle ParentId a ParentType).
    void RemoveColumn(int columnId) Metoda vymaže sloupec z instance DataRow. Po uložení do databáze se sloupec nebude měnit.
    void RemoveColumn(string code) Metoda vymaže sloupec z instance DataRow. Po uložení do databáze se sloupec nebude měnit.
    void RemoveColumnsExceptThose(string codes)

    Metoda vymaže všechny sloupce z instance DataRow, kromě zadaných. Po uložení do databáze se sloupec nebude měnit.

    Jednotlivé kódy sloupců oddělujte čárkou.

    EntityInfo ToEntityInfo()

    Funkce vytvoří nový objekt EntityInfo a následně naplní vlastnosti:

        EntityInfo.Id = Id

        EntityInfo.DisplayName = ShortDescriptionOrFullId

        EntityInfo.ParentId = ParentId

        DisplayName1 = DetailUrl

    EntityInfo ToEntityInfoLocalize()

    Funkce vytvoří nový objekt EntityInfo a následně naplní vlastnosti:

        EntityInfo.Id = Id

        EntityInfo.DisplayName = ShortDescriptionOrFullIdEnvelopeLocalize

        EntityInfo.ParentId = ParentId

        DisplayName1 = DetailUrl

    string ListUrl URL na seznam záznamů aktuální třídy nebo dotazu.
    string DetailUrl URL na detail záznamu aktuální třídy nebo dotazu.
    string NewDetailUrl URL na detail nového záznamu aktuální třídy nebo dotazu.
    Funkce pro čtení dat sloupců

    object GetColumnData(int columnId)

    Funkce načte hodnotu ze zadaného sloupce. Typ vrácené hodnoty závisí na typu sloupce.
    string GetText(int columnId) Funkce vrátí text pro sloupec.
    int? GetClassDef(int columnId) Funkce vrátí celé číslo, reprezentující Id třídy pro sloupec.
    int? GetColor(int columnId) Funkce vrátí celé číslo, reprezentující barvu pro sloupec.
    string GetServerImage(int columnId) Funkce vrátí text, url obrázku pro sloupec.
    string GetServerImageAsString(int columnId) Funkce vrátí text, url obrázku pro sloupec jako text.
    int? GetInteger(int columnId) Funkce vrátí celé číslo pro sloupec.
    double? GetDouble(int columnId) Funkce vrátí desetinné číslo pro sloupec.
    DateTime? GetDateTime(int columnId) Funkce vrátí datum pro sloupec.
    int? GetClassLink(int columnId) Funkce vrátí Id na odkazovaný záznam pro sloupec.
    EntityInfo GetXClassLink(int columnId) Funkce vrátí EntityInfo pro sloupec.
    string GetXClassLinkAsString(int columnId) Funkce vrátí EntityInfo pro sloupec jako text.
    PersonInfo GetPerson(int columnId) Funkce vrátí PersonInfo pro sloupec.
    bool? GetBoolean(int columnId) Funkce vrátí příznak Ano/Ne pro sloupec.
    Guid? GetGuid(int columnId) Funkce vrátí Guid pro sloupec.
    EntityInfoList GetMultiClassLink(int columnId) Funkce vrátí seznam EntityInfo pro sloupec násobný odkaz do číselníku.
    EntityInfoList GetXMultiClassLink(int columnId) Funkce vrátí seznam EntityInfoList pro sloupec násobný odkaz na vice tříd.
    PersonInfoList GetMultiPerson(int columnId) Funkce vrátí seznam PersonInfo pro sloupec násobný odkaz na uživatele.
    string GetClassLinkAsString(int columnId) Funkce vrátí Id na odkazovaný záznam pro sloupec jako text.
    string GetTextAsString(int columnId) Funkce vrátí text pro sloupec jako text.
    string GetLongTextAsString(int columnId, int maxLength) Funkce vrátí text pro sloupec jako text. Pokud je délka textu větší než je uvedeno v parametru maxLength, text je oříznut na tuto max. délku.
    string GetIntegerAsString(int columnId, string format) Funkce vrátí celé číslo pro sloupec jako text s definovaným formátem.
    string GetDoubleAsString(int columnId, string format) Funkce vrátí desetinné číslo pro sloupec jako text s definovaným formátem.
    string GetDateTimeAsString(int columnId) Funkce vrátí datum pro sloupec jako text.
    string GetDateTimeAsString(int columnId, DateTimeType dateTimeType) Funkce vrátí datum pro sloupec, jako text s definovaným formátem.
    string GetDateTimeAsString(int columnId, string format) Funkce vrátí datum pro sloupec jako text s definovaným formátem.
    string GetBooleanAsString(int columnId) Funkce vrátí příznak Ano/Ne pro sloupec jako text dle aktuálně nastavené lokalizace.
    string GetGuidAsString(int columnId) Funkce vrátí Guid pro sloupec jako text.
    string GetClassDefAsString(int columnId) Funkce vrátí celé číslo reprezentující Id třídy pro sloupec jako text.
    string GetColorAsString(int columnId) Funkce vrátí celé číslo reprezentující barvu pro sloupec jako text.
    string GetColumnDataAsString(int columnId, ColumnType type) Funkce vrátí hodnotu sloupce jako text.
    object GetSystemColumnData(string dBColumnName) Funkce vrátí hodnotu systémového sloupce.
    string GetSystemColumnDataAsString(string dBColumnName) Funkce vrátí hodnotu systémového sloupce jako text.
    object GetDR(string path) Funkce vrátí objekt podle zadané cesty.
    object GetDR(string path, DbTransaction trans) Funkce vrátí objekt podle zadané cesty.
    Funkce pro uložení dat do sloupců
    void SetColumnData(int columnId, ColumnType type, object value) Metoda nastaví hodnotu sloupce.
    void SetText(int columnId, string value) Metoda nastaví hodnotu sloupce typu krátký text.
    void SetClassDef(int columnId, int? value) Metoda nastaví hodnotu sloupce typu odkaz na třídu.
    void SetColor(int columnId, int? value) Metoda nastaví hodnotu sloupce typu barva.
    void SetServerImage(int columnId, string value) Metoda nastaví hodnotu sloupce typu obrázek na serveru.
    void SetInteger(int columnId, int? value) Metoda nastaví hodnotu sloupce typu celé číslo.
    void SetDouble(int columnId, double? value) Metoda nastaví hodnotu sloupce typu desetinné číslo.
    void SetDateTime(int columnId, DateTime? value) Metoda nastaví hodnotu sloupce typu datum.
    void SetClassLink(int columnId, int? value) Metoda nastaví hodnotu sloupce typu odkaz do číselníku.
    void SetClassLink(int columnId, double? value) Metoda nastaví hodnotu sloupce typu odkaz do číselníku.
    void SetXClassLink(int columnId, EntityInfo value) Metoda nastaví hodnotu sloupce typu odkaz do číselníku na více tříd.
    void SetPerson(int columnId, PersonInfo value) Metoda nastaví hodnotu sloupce typu odkaz na uživatele.
    void SetBoolean(int columnId, bool? value) Metoda nastaví hodnotu sloupce typu příznak Ano/Ne.
    void SetGuid(int columnId, Guid? value) Metoda nastaví hodnotu sloupce typu guid.
    void SetMultiClassLink(int columnId, EntityInfoList value) Metoda nastaví hodnotu sloupce typu násobný odkaz na třídu.
    void SetMultiPerson(int columnId, PersonInfoList value) Metoda nastaví hodnotu sloupce typu násobný odkaz na uživatele.
    void SetClassLinkAsString(int columnId, string value) Metoda nastaví hodnotu sloupce typu odkaz na třídu a to jeho textovou podobu. Tato hodnota se neukládá do databáze, slouží pouze pro zobrazení na stránkách pro uživatele.
    void SetMultiXClassLink(int columnId, EntityListBase value) Metoda nastaví hodnotu sloupce typu násobný odkaz na více tříd.

    Čtení hodnot sloupců

    Pro čtení hodnot sloupce existuje řada funkcí dle typu sloupce. Pokud vám však stačí textová hodnota, kterou budete jen zobrazovat a nijak ji dále používat, pak můžete použít metodu GetColumnDataAsString pro uživatelské sloupce a GetSystemColumnDataAsString pro systémové sloupce. Informaci, zda je sloupec uživatelský nebo systémový, naleznete v objektu ColumnClassDef ve vlastnosti IsSystemColumn.

    Podívejte se na podrobný popis datových typů pro čtení a zápis.

    Zápis hodnot do sloupců

    Stejně jako pro čtení existuje řada funkcí pro zápis hodnoty do sloupců. Pro každý typ sloupce existuje alespoň jedna metoda.

    Pro zápis však můžete použít jednu univerzální metodu SetColumnData pro všechny sloupce. Dejte však pozor na vkládaný datový typ, který musí odpovídat typu sloupce.

    Podívejte se na podrobný popis datových typů pro čtení a zápis.

    Univerzální zápis a čtení

    Pro zápis a čtení hodnot z objektu lze použít zjednodušený zápis. Pro tento zápis jen musíte znát ID nebo kód daného sloupce.

    var x = dr[id_sloupce];
    dr[id_sloupce] = ...

    var x = dr['kod'];
    dr['kod'] = ...

    Kód sloupce může být jednoduchý 'kod' nebo složený 'kod_tridy.kod_sloupce'.  Jednoduchý kód použijte, pokud se dotazujete na sloupec, který patří do stejné třídy jako je ve vlastnosti ParentId od DataRow, který používáte. Složený kód použijte pro dotaz na sloupec z předka.

    Tato syntaxe nefunguje pro sloupce typu Soubor.

    Poznámka: Funkce interně používají funkce GetColumnData a SetColumnData.

    Funkce GetDR

    Funkce GetDR vám umožní pohodlné procházení mezi referencemi jednotlivých záznamů bez složitého vytváření filtrů, načítání dat atd.

    Pro příklad máme instanci DataRow třídy Škola. Ta má referenci na třídu Město a ta na třídu Stát. Pokud byste chtěli od Datarow ze třídy škola načíst stát, museli byste provést dvě hledání (město a pak stát). Pomocí funkce GetDR vše zajistíte rychleji:

    var stat = drSkola.GetDR('mesto>stat');

    Parametr path obsahuje postupně kódy sloupců, přes které se má procházet. První je sloupec ze třídy Škola nazvaný mesto. Tím se dohledá záznam ze třídy Město. Pak následuje kód stat ze třídy Město, což vyhledá záznam ze třídy Stát. A tento záznam se vrátí jako výsledek funkce. Pokud je některý ze sloupců prázdný, pak je vráceno NULL.

    Všechny sloupce musí být typu jednoduchý odkaz, kromě posledního sloupce.

    Pokud máte v instanci systému ObjectGears povoleny rozšiřující vlastnosti uživatelů, pak můžete přecházet i přes uživatele. Pokud je povoleny nemáte, pak sloupec typu uživatel může být uveden jen jako poslední.

    Pro procházení lze zase použít příkaz FOR.

    var drLinky = dr.GetDR('nasobny sloupec');

    for( var i = 0; i < drLinky.Count; ++i)
    {
      var id = drLinky[i].Id;
      var text = drLinky[i].ShortDescription;
    }

    Textové sloupce

    Pro text je možné použít funkce GetText, SetText a GetTextAsString. Pro dlouhý text je ještě jedna funkce GetLongTextAsString( int column, int maxLength). Ta umožňuje vrátit text v zadané maximální délce.

    Funkce FindColumn

    Kód sloupce lze do funkce FindColumn zadávat dvojím způsobem:

    kod_sloupce - samotný kód sloupce. Pak se sloupec bude hledat přímo ve třídě/dotazu, který odpovídá vlastnosti ParentId v DataRow.

    kod_třídy.kod_sloupce - kód třídy následován kódem sloupce. Pak se sloupec bude hledat v předku třídy, který má kód kod_třídy.

    Audit záznamu

    Systém ObjectGears rozlišuje dvě úrovně logování změna a auditu. Jedna je přímo v objektu DataRow a reprezentuje ji šest auditních sloupců (Created, Creator,...), které uchovávají iformace kdo a kdy záznam vytvořil, naposled změnil a zmazal.

    Pokud požadujete větší detail změn, pak můžete na třídě zapnout archivaci. Tím se veškeré změny začnou ukládat do archivní tabulky ve formě verzí záznamů. Takovéto záznamy pak mají vyplněné sloupce ArchiveId, ArchiveUser a ArchiveDate.

    Komentáře

    Pro sloupec Dlouhý text je možné zapnout režim komentování. Pomocí metody AddNewComment pak můžete přidávat nové komentáře k celkovému textu i programově. Před každý komentář je přidán oddělovač, datum a jméno uživatele, který komentář přidal. Pokud záznam ještě žádný komentář nemá, pak se tato "hlavička" nevkládá.

    Vlastnost je vhodná pro pole, která nechcete měnit, jen k nim připisovat nové komentáře, změny atd. (např. logy)

    ----- 09.09.2013 09:44:27 - Josef Novák
    Nový komentář.

    -----
    První komentář. Před něj je přidáno jen několik pomlček pro oddělení.

×