2014-11-21 22 views
1

是否有任何方法可以使用Application.ExportXML方法来合并多个查询,而是将查询嵌套在对方内?在导出为XML时嵌套多个表/查询

例如,假设我有三个表格。我已经可以使用Application.ExportXML方法将三者合并在一起。我不想重复的主要查询不会重复,并且所有客户信息都会重复查询。好。

但它出来像这样(各种原因偏执我使用假数据):

<DogCare> 
    <Facility>Twin Peaks</Facility> 
    <Year>1992</Year> 
    <Month>1</Month> 
</DogCare> 
<DogTeam> 
    <Team>DogWalker</Team> 
    <DogsWalked>24</DogsWalked> 
    <TreatsGiven>900</TreatsGiven> 
</DogTeam> 
<PetWalkTime> 
    <Name>Palmer</Name> 
    <Age>7</Age> 
    <FavoriteSnack>Cheese</FavoriteSnack> 
    <FavThingtoDo>Chew Shoes</FavThingtoDo> 
    <Day>1</Day> 
    <DidBusiness>Yes</DidBusiness> 
    <Barked>Constantly</Barked> 
    <PulledonLeash>Whole Time</PulledonLeash> 
    <DeservesTreat>Gave it Anyway</DeservesTreat> 
</PetWalkTime> 
<PetWalkTime> 
    <Name>Laura</Name> 
    <Age>5</Age> 
    <FavoriteSnack>Pie</FavoriteSnack> 
    <FavThingtoDo>Fetch</FavThingtoDo> 
    <Day>1</Day> 
    <DidBusiness>Yes</DidBusiness> 
    <Barked>No</Barked> 
    <PulledonLeash>No</PulledonLeash> 
    <DeservesTreat>Gave Several</DeservesTreat> 
</PetWalkTime> 

现在。 “DogCare”,“DogTeam”和“PetWalkTime”是单独的查询。然而,他们都是相关的,属于彼此,如下所示:

<DogCare> 
    <Facility>Twin Peaks</Facility> 
    <Year>1992</Year> 
    <Month>2</Month> 
    <DogTeam> 
    <Team>DogWalker</Team> 
    <DogsWalked>24</DogsWalked> 
    <TreatsGiven>900</TreatsGiven> 
    <PetWalkTime> 
     <Name>Palmer</Name> 
     <FavoriteSnack>Cheese</FavoriteSnack> 
     <FavThingtoDo>Chew Shoes</FavThingtoDo> 
     <Day>1</Day> 
     <DidBusiness>Yes</DidBusiness> 
     <Barked>Constantly</Barked> 
     <PulledonLeash>Whole Time</PulledonLeash> 
     <DeservesTreat>Gave it Anyway</DeservesTreat> 
    </PetWalkTime> 
    <PetWalkTime> 
     <Name>Laura</Name> 
     <FavoriteSnack>Pie</FavoriteSnack> 
     <FavThingtoDo>Fetch</FavThingtoDo> 
     <Day>1</Day> 
     <DidBusiness>Yes</DidBusiness> 
     <Barked>No</Barked> 
     <PulledonLeash>No</PulledonLeash> 
     <DeservesTreat>Gave Several</DeservesTreat> 
    </PetWalkTime> 
    </DogTeam> 
</DogCare> 

是否有任何方法可以使最后一个可能出口?

回答

1

是,Application.ExportXML可以导出正确嵌套的XML,只要

  1. 要导出表(未查询),并
  2. 你已经设置了表之间的连接(也称为外键约束)关系

Relationships.png

即使你使用的方法OUTL如果任这些条件没有满足,然后独立非执行董事的MSDN文章中here你仍然会得到“连续” XML:

<?xml version="1.0" encoding="UTF-8"?> 
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2014-11-21T13:43:50"> 
    <DogCare> 
     <ID>1</ID> 
     <Facility>Twin Peaks</Facility> 
    </DogCare> 
    <DogTeam> 
     <TeamID>1</TeamID> 
     <ParentID>1</ParentID> 
     <Team>DogWalker</Team> 
    </DogTeam> 
    <PetWalkTime> 
     <WalkID>1</WalkID> 
     <TeamID>1</TeamID> 
     <Name>Palmer</Name> 
     <Age>7</Age> 
    </PetWalkTime> 
    <PetWalkTime> 
     <WalkID>2</WalkID> 
     <TeamID>1</TeamID> 
     <Name>Laura</Name> 
     <Age>5</Age> 
    </PetWalkTime> 
</dataroot> 

但是,如果两个条件都满足,那么我们就可以使用这样的代码获得“嵌套”这样的XML

<?xml version="1.0" encoding="UTF-8"?> 
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2014-11-21T13:52:50"> 
    <DogCare> 
     <ID>1</ID> 
     <Facility>Twin Peaks</Facility> 
     <DogTeam> 
      <TeamID>1</TeamID> 
      <ParentID>1</ParentID> 
      <Team>DogWalker</Team> 
      <PetWalkTime> 
       <WalkID>1</WalkID> 
       <TeamID>1</TeamID> 
       <Name>Palmer</Name> 
       <Age>7</Age> 
      </PetWalkTime> 
      <PetWalkTime> 
       <WalkID>2</WalkID> 
       <TeamID>1</TeamID> 
       <Name>Laura</Name> 
       <Age>5</Age> 
      </PetWalkTime> 
     </DogTeam> 
    </DogCare> 
</dataroot> 

Option Compare Database 
Option Explicit 

Sub XmlExportTest() 
    Dim objTeam As AdditionalData, objWalk As AdditionalData 
    Set objTeam = Application.CreateAdditionalData 
    Set objWalk = objTeam.Add("DogTeam") 
    objWalk.Add "PetWalkTime" 
    Application.ExportXML _ 
      ObjectType:=acExportTable, _ 
      DataSource:="DogCare", _ 
      DataTarget:="C:\Users\Gord\Desktop\DogData.xml", _ 
      AdditionalData:=objTeam 
End Sub 
+0

是的!非常感谢!如果可以的话,我会给你买一个甜甜圈或其他东西!好的。所以,PetWalkTime仍然没有出现,这听起来很有趣,但是,你仍然给了我一个巨大的支持。荣誉和感谢! – thedoorbehindyourmind 2014-11-21 19:48:02

+1

等一下,PetWalkTime又回来了。我对这段关系做了一个混乱。好的!!!所以非常感谢! – thedoorbehindyourmind 2014-11-21 19:50:44