1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Add relations to dataset dynamically in Progress OpenEdge

Discussão em 'StackOverflow' iniciado por fdantas, Novembro 7, 2017.

  1. fdantas

    fdantas Administrator Moderador

    I would like to create a dataset that only contains the temp-tables, and where the relations will be defined later.

    When I define the relations in the dataset everything works fine

    DEF TEMP-TABLE ttParent NO-UNDO
    FIELD pKey AS INT
    FIELD parentName AS CHAR.

    DEF TEMP-TABLE ttChild NO-UNDO
    FIELD iParent AS INT XML-NODE-TYPE "HIDDEN"
    FIELD childName AS CHAR.

    DEF DATASET dsMyDataset
    FOR ttParent, ttChild

    DATA-RELATION Parent_Child FOR ttParent, ttChild
    RELATION-FIELDS(pKey, iParent)
    NESTED FOREIGN-KEY-HIDDEN.

    CREATE ttParent.
    ASSIGN
    ttParent.pKey = 1
    ttParent.parentName = "Parent".

    CREATE ttChild.
    ASSIGN
    ttChild.iParent = ttParent.pKey
    ttChild.childName = "Child".

    CREATE ttChild.
    ASSIGN
    ttChild.iParent = ttParent.pKey
    ttChild.childName = "Child2".

    DATASET dsMyDataset:WRITE-XML("FILE", "C:/temp/testDs.xml").


    This creates the following XML as expected:

    <?xml version="1.0"?>
    <dsMyDataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ttParent>
    <pKey>1</pKey>
    <parentName>Parent</parentName>
    <ttChild>
    <childName>Child</childName>
    </ttChild>
    <ttChild>
    <childName>Child2</childName>
    </ttChild>
    </ttParent>
    </dsMyDataset>


    Now when I rewrite this into a dataset where only the temptables are defined and the relations are added later:

    // Definition of temp-tables same as above

    DEF DATASET dsMyDynamicDataset
    FOR ttParent, ttChild.

    DATASET dsMyDynamicDataset:ADD-RELATION (
    BUFFER ttParent:HANDLE, BUFFER ttChild:HANDLE,
    "pKey,iParent",
    FALSE, TRUE, FALSE, FALSE, TRUE).

    // Filling of temp-tables same as above

    DATASET dsMyDynamicDataset:WRITE-XML("FILE", "C:/temp/testDs.xml").


    I would expect the same result as above but this is the result I get instead:

    <?xml version="1.0"?>
    <dsMyDynamicDataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ttParent>
    <pKey>1</pKey>
    <parentName>Parent</parentName>
    </ttParent>
    <ttChild>
    <childName>Child</childName>
    </ttChild>
    <ttChild>
    <childName>Child2</childName>
    </ttChild>
    </dsMyDynamicDataset>

    Continue reading...

Compartilhe esta Página