2016-10-10 62 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

Access使用「關係」來標識父/子層次導出時到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查詢模式,但可以使用Access 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);