SOG-Helpcenter Logo SOG Business - Software

Konfiguration von Datenquellen für die Nutzung von erweiterten Feldern (Metadaten und Auswahllisten)


Um auch innerhalb von SOGForms auf Metadaten und Auswahllistenreferenzwerte zugreifen zu können, können Datenströme, die über LGEN/LIOCS entstehen über eine Erweiterungsfunktion um Metadaten, Relationsdaten und Auswahllistenreferenzwerte erweitert werden.
Hinweis: Die weiteren möglichen Datenquellen für SOGForms sind ebenfalls in der Lage auf Metadaten und Auswahlreferenzwerte zuzugreifen. (SQL und XmlInfo).

Damit die Expansion durchgeführt wird, ist eine Steuerdatei zu erstellen. Die Steuerdatei hat den Namen "<Liste>_exp.txt" und liegt in einem der durch die Variable "FRMPATH" festgelegten Verzeichnisse, unterhalb des Verzeichnisses "Translate".
Beispiel:
${PROJ}\sogforms.indi\translate\p104pa_exp.txt

Die Steuerdatei hat folgenden Aufbau:

<RelationExpand>
    <Collect Field="inhalt.firma" />
    <Collect Field="p104prbk.konto" DefaultValue="0" />
    <Expand Copy="p104prbk" Relation="person:meta_kunde"
            Fields="inhalt.firma,int32 1 p104prbk.konto,int32"
            Field="zusatztext" Name="meta_zusatztext"
            EnableFlowDoc="true" />
</RelationExpand>

Mit "Collect" werden Felder definiert, die in dem SOGForms-Datenstrom "gesammelt" werden sollen. Feldnamen setzen sich hier aus dem "Copynamen" und dem "Feldnamen im Copy" zusammen. Über DefaultValue kann ein Wert angegeben werden der verwendet wird, wenn das Datenfeld im Datenstrom nicht gefunden wird. Standard ist hier "0".

 
Mit jeder "Expand"-Anweisung wird nun jeweils ein Datenfeld an ein bestehendes Cobol-Copy angehängt.
"Copy" legt das zu expandierende Copy fest. "Relation" definiert die Relation und die Zieltabelle. "Fields" legt fest, mit welchen Informationen auf die Zieltabelle referenziert werden soll. Geben Sie ",int32" hinter dem Feldnamen an um anzuzeigen, dass das Datenfeld einen numerischen Inhalt hat.
"Field" legt fest, welches Datenfeld aus der Zieltabelle geholt werden soll, "Name" legt den Namen innerhalb des SOGForms-Datenstroms fest.
 

Durch "EnableFlowDoc" kann festgelegt werden, dass der Inhalt von SGFlowDocument Datenfeldern als SOGFlowDocument Text an SOGForms übergeben wird. Fehlt die Angabe, erfolgt eine Wandlung in nicht aufbereiteten Text.

Durch "EnableHtml" kann festgelegt werden, dass der Inhalt von SGHtmlText Datenfeldern auch als HTML-Code expandiert wird. Fehlt die Angabe, erfolgt eine Wandlung in nicht-Html Text.

Expansion von Auswahllistenreferenzwerten


Für die Expansion von Auswahllistenreferenzwerten kann folgende Syntax verwendet werden:


<RelationExpand>
    <Collect Field="p104prbk.lfbdg" />
    <Collect Field="p104prbk.lfbdg_lang" DefaultValue="ger" />
    <Expand Copy="p104prbk" Awl="lfbdg" Fields="p104prbk.lfbdg" Name="lfbdg_ger" />
    <Expand Copy="p104prbk" Awl="lfbdg" Fields="p104prbk.lfbdg" Name="lfbdg_ned" Lang="ned"/>
    <Expand Copy="p104prbk" Awl="lfbdg" Fields="p104prbk.lfbdg" Name="lfbdg_eng" Lang="eng"/>
    <Expand Copy="p104prbk" Awl="lfbdg" Fields="p104prbk.lfbdg" Name="lfbdg_dyn" Lang="${p104prbk.lfbdg_lang}"/>
</RelationExpand>

In diesem Beispiel wird der Inhalt des Datenfeldes p104prbk.lfbdg über die Auswahlliste "lfbdg" in unterschiedlichen Sprachen expandiert.

 

Zugriff über eine Relationsverschachtelung


Um auf Daten zugreifen zu können, die sich in tieferen, relationalen Verschachtelungsebenen befinden, nutzen sie als Feldname (Fields) die allgemeine Form

 

#rel:[Relationsname]:#[Datenbankklasse].[FeldnameUntertabelle]

Beispiel:

    <Expand Copy="p104prbk" 

       Relation="Person:meta_beispiel_kunde" Fields="1 1 p104prbk.konto" 

       Field="#rel:Person:#Kundenstamm.m_name1" 

       Name="name1deskunden" 

    />

 
In diesem Beispiel wird über die Relation der Gruppe "Person" auf die Datenbanktabelle meta_beispiel_kunde verwiesen.

Dort wird jedoch nicht direkt ein Datenfeld verwendet.

Vielmehr wird dem Realtionspfad in "Field" folgend über die Realtionsgruppe "Person" auf die Datenbanktabelle "#Kundenstamm" (f010) referenziert, und von dort das Datenfeld "m_name1" geliefert.

 

An Stelle von "FeldnameUntertabelle" kann auch erneut eine Relationsdefinition verwendet werden. Auf diese Art kann über unterschiedliche Relationen von Objekt zu Objekt gesprungen werden, und erst auf dem letzten Objekt dieser Kette ein Datenbankfeld verwendet werden.

 

Verwendung eines zuvor ermittelten Wertes für den weiteren Relationszugriff

 

Mit der Schreibweise "#Feldname" können Sie auf den Wert eines zuvor per Relation ermittelten Feldes zurückgreifen, um damit z. B. einer weiteren Relation zu folgen.

 

Beispiel:

 

   <Expand Copy="f030" Relation="Artikel:meta_beispiel_artikel"

           Fields="1 f030.sa f030.art"

           Field="m_hinweis" Name="meta_hinweis" />

       

   <Expand Copy="f030" Relation="ArtikelMetaHinweise:meta_hinweise"

           Fields="1 #meta_hinweis"

           Field="m_bez1" Name="meta_hinweis_bez1" />

 

Das im ersten Block definierte Datenfeld "meta_hinweis" wird im zweiten Block mit der Schreibweise "#meta_hinweis" verwendet, um auf die 2. Relation zuzugreifen.

 

 

#metadaten #metadatenexpansion #relationen #meta