1. Přenos hodnot do nového záznamu při zakládání z master detail relace

    Článek: AN0002409Aktualizováno:: 18.01.2020

    V některých případech chceme při zakládání nového záznamu z master-detail relace přenášet hodnoty z odkazovaného záznamu do nově zakládaného záznamu.

    V příkladu níže máme třídu Projekt, která obsahuje mj. sloupec Primární cíl (primary_goal) a sloupec Modifikované položky (modified-ci). Na obrazovce níže jsou tyto sloupce zvýrazněny spolu s tlačítkem pro založení nového záznamu v master-detail relaci.

     

     

    Naším cílem je, aby po kliku na tlačítko Nový došlo k otevření nového záznamu s Úkolem, který se bude odkazovat na daný Projekt a navíc bude mít ve sloupcích Cíl a Modifikované položky předvyplněné hodnoty převzaté z projektu - tak jak to vidíme na obrázku níže.

     

    Pro větší jasnost ještě uvádíme entity-relationship diagram zobrazující sloupce relevantní pro náš příklad.

     

    Pro dosažení tohoto chování nastavíme v příslušné master-detail relaci třídy Projekt proměnnou, která bude přidána do URL a kterou pak identifikujeme v pravidle Před zobrazením nového záznamu v detailu třídy Úkol.

    Vlastnost Url proměnné pro nový záznam nastavíme na "com=goal".

    Pravidlo typu Skript události Před zobrazením nového záznamu v detailu:

    var com = OG.QueryString.GetString('com');
    var proId = OG.QueryString.GetInt('Fi1v');

    if ( com == 'goal' && proId != null)
    {
      var clPro = OGDataParent.Model.ClassDefs['project'];
      var drPro = OG.DataRow.GetDataById( clPro.Id, proId);

      if ( drPro != null)
      {
        //nacist Primární cíl
        var id = drPro['primary_goal'];
        if ( id != null)
        {
          var clGoal = OGDataParent.Model.ClassDefs['goal'];
          OGActualDataRow['goal'] = OG.DataRow.GetDataById(clGoal.Id, id);
        }

        //nacist Modifikované konfiguracni polozky
        var clCi = OGDataParent.Model.ClassDefs['ci'];
        var cis = drPro['modified-ci'];
        if ( cis != null && cis.Count > 0)
        {
          //OGActualDataRow['modified-ci'] = OG.DataRow.GetDataById(clCi.Id, cis[0].Id);

          OGActualDataRow['modified-ci'].AddRange(cis);
        }
      }
    }

×