2017-11-07 5 views
1

임시 테이블 만 포함하고 이후에 관계가 정의되는 데이터 집합을 만들고 싶습니다. 진행 상황에서 동적으로 데이터 집합에 관계 추가 OpenEdge

내가 데이터 세트 모두의 관계를 정의

잘 작동

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"). 

이 예상대로 다음과 같은 XML 생성 : 나는 단지 temptables는 데이터 집합에이를 다시 작성하는 경우 이제

<?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> 

을 정의는 나중에 추가됩니다 :

// 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"). 

나는 위의 결과와 같지만 결과는 다음과 같습니다.

<?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> 

답변

관련 문제