2014-11-21 36 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