2013-09-24 8 views
5

Ho bisogno di creare un file XML da Access. Deve avere un formato di tipo nodo relazionale.Esporta file XML nidificato dall'accesso. bisogno di file XML con i nodi

Ad esempio:

<Item> 
    <description></description> 
    <colors> 
     <blue> 
     <green> 
    </colors> 
</item> 

I dati per gli elementi è in una tabella. I colori sono in un altro. Ho degli ID di riferimento in modo che possa unirmi a loro.

Come/può essere fatto. Ho cercato dappertutto e vedo come esportare una tabella, ma non il tipo di file annidato.

risposta

1

Di seguito è riportato un esempio di ciò che utilizzo per richiedere dati e quindi esportare i risultati in un file flat. L'ho adattato in qualche modo a ciò di cui potresti aver bisogno.

On Error GoTo Err_My_Click 
Dim rs As DAO.Recordset 
Set rs = CurrentDb.OpenRecordset("SELECT * FROM MyTable", dbOpenDynaset) 

If (rs.RecordCount <> 0) Then 
    rs.MoveFirst 

    Open "C:\Export\XML__MyFile.xml" For Output As #1 

    Do While rs.EOF = False 
    TempExportCount = TempExportCount + 1 

    Print #1, "<Item>" 
    Print #1, " <description>" & rs.Fields("[Description]").value & "</description>" 
    Print #1, "</Item>" 

    rs.MoveNext 
    Loop 
End If 

Exit_My_Click: 
    On Error Resume Next 
    rs.Close 
    Set rs = Nothing 
    Close 1# 
    Exit Sub 
Err_My_Click: 
    If (Err.Number = 76) Then 
    MsgBox ("The program could not save the txt file." & vbNewLine & vbNewLine & _ 
      "Make sure you have the following folder created: C:\Export\") 
    Else 
    MsgBox (Err.Description) 
    End If 
    Resume Exit_My_Click 
1

creare una query SELECT che utilizza l'ID di riferimento per unire la vostra tabella di oggetti con la tabella colori.

Una volta che hai una query che raccoglie correttamente le informazioni, esporta i dati in XML dall'interfaccia utente di Access.

Export query to XML

Se che ti dà l'XML che si desidera, è possibile automatizzare l'operazione di esportazione da VBA utilizzando il Application.ExportXML Method. Si noti che il metodo offre una serie di opzioni per modificare l'XML. Ma l'esportazione potrebbe essere semplice come questo ...

Application.ExportXML acExportQuery, "YourQuery", _ 
    "C:\SomeFolder\YourQuery.xml" 
+0

[code] prova Elemento Blu prova Elemento verde prova Elemento Blu [/ code] – macecase

1

uso il attaccato a produrre un xml nidificato 3 milioni di linea in circa cinque minuti.

Ci sono due elementi chiave,

1) un semplice pezzo di VB,

Public Function Export_ListingData() 

    Dim objOtherTbls As AdditionalData 

    On Error GoTo ErrorHandle 
    Set objOtherTbls = Application.CreateAdditionalData 
    objOtherTbls.Add "ro_address" 
    objOtherTbls.Add "ro_buildingDetails" 
    objOtherTbls.Add "ro_businessDetails" 
    objOtherTbls.Add "ro_businessExtras" 
    objOtherTbls.Add "ro_businessExtrasAccounts" 
    objOtherTbls.Add "ro_businessExtrasAccom" 
    objOtherTbls.Add "ro_businessExtrasAccom2" 

    Application.ExportXML ObjectType:=acExportTable, _ 
       DataSource:="ro_business", _ 
       DataTarget:="C:\Users\Steve\Documents\Conversions\ListData.xml", _ 
       AdditionalData:=objOtherTbls 
Exit_Here: 
     MsgBox "Export_ListingData completed" 
     Exit Function 
ErrorHandle: 
     MsgBox Err.Number & ": " & Err.Description 
     Resume Exit_Here 
End Function 

2) Collegamento le tabelle in relationship manager utilizzando join dalle elementari alle chiavi esterne.

Se non ci sono relazioni il codice produrrà un file xml sequenziale, se ci sono relazioni tra chiavi primarie si otterrà un errore 31532 e l'esportazione dei dati avrà esito negativo.

+0

prega di non pubblicare la stessa risposta alla lettera a più domande. Se le domande sono effettivamente le stesse, contrassegna per chiuderle come duplicati. –