2016-10-10 63 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);