2016-10-10 5 views
1
Public Sub Click() 

    Dim objOtherTbls As AdditionalData 

     Set objOtherTbls = Application.CreateAdditionalData 
     objOtherTbls.Add "vessels" 
     objOtherTbls.Add "Export" 

     Application.ExportXML ObjectType:=acExportTable, _ 
        DataSource:="orderSummary", _ 
        DataTarget:="pls.xml", _ 
        AdditionalData:=objOtherTbls 


End Sub 

enter image description here중첩 된 XML 내보내기

어떻게 중첩 된 XML을 않고 중복 필드는 한 번만 반복?

I would like something like: 

<vessels> 
    <vessels ID> 
     <product Id> 
     <quantity> 
     <product Id> 
     <quantity> 
     <product Id> 
     <quantity> 

어떻게 테이블을 병합하고는 각 선박의 이름을 한 번하기 위해, 위의 언급처럼 만들 않는 용기 아래에 나열된와의 탭의 모든 항목?

답변

1

액세스가 상위/하위 계층 구조를 표시하는 "관계"를 사용을 XML에. 데이터베이스에 분명히 [혈관]과 [내보내기] 사이의 관계가 누락되어 있으므로 질문에 표시 할 때 두 테이블의 "평면"XML 내보내기를 얻을 수 있습니다.

데이터베이스에 관계를 추가하면 ...

Relationships.png

... 당신은 당신이 찾는 그 "중첩"XML 내보내기를 얻을 것이다 :

<vessels> 
    <vessel_id>2</vessel_id> 
    <vessel_name>B</vessel_name> 
</vessels> 
<vessels> 
    <vessel_id>3</vessel_id> 
    <vessel_name>C</vessel_name> 
    <Export> 
    <product_id>10</product_id> 
    <Quantity>10</Quantity> 
    <vessel_id>3</vessel_id> 
    </Export> 
    <Export> 
    <product_id>100</product_id> 
    <Quantity>20</Quantity> 
    <vessel_id>3</vessel_id> 
    </Export> 
    <Export> 
    <product_id>1000</product_id> 
    <Quantity>1</Quantity> 
    <vessel_id>3</vessel_id> 
    </Export> 
    <Export> 
    <product_id>10000</product_id> 
    <Quantity>10</Quantity> 
    <vessel_id>3</vessel_id> 
    </Export> 
    <Export> 
    <product_id>10001</product_id> 
    <Quantity>20</Quantity> 
    <vessel_id>3</vessel_id> 
    </Export> 
    <Export> 
    <product_id>10002</product_id> 
    <Quantity>10</Quantity> 
    <vessel_id>3</vessel_id> 
    </Export> 
</vessels> 
0

여기 스케치 빠르다합니다 (SQL DDL은 ANSI-92 쿼리 모드를 필요로하지만 액세스 GUI 도구를 사용하여 재현 할 수 있습니다) : 내보낼 때

CREATE TABLE vessels 
(vessel_id INT NOT NULL UNIQUE, 
    vessel_name CHAR(1) WITH COMPRESSION NOT NULL UNIQUE); 

CREATE TABLE Export 
(product_id INT NOT NULL UNIQUE, 
    Quantity INT NOT NULL, CHECK (Quantity >= 0), 
    vessel_id INT NOT NULL 
    REFERENCES vessels (vessel_id)); 

INSERT INTO vessels VALUES (1, 'A'); 
INSERT INTO vessels VALUES (2, 'B'); 
INSERT INTO vessels VALUES (3, 'C'); 
INSERT INTO vessels VALUES (4, 'D'); 
INSERT INTO vessels VALUES (5, 'E'); 

INSERT INTO Export VALUES (10, 10, 3); 
INSERT INTO Export VALUES (100, 20, 3); 
INSERT INTO Export VALUES (1000, 1, 3); 
INSERT INTO Export VALUES (10000, 10, 3); 
INSERT INTO Export VALUES (10001, 20, 3); 
INSERT INTO Export VALUES (10002, 10, 3);