2016-05-02 3 views
1

Ich möchte in der Lage sein, VBA oder ein Makro (oder eine andere Methode) zu verwenden, um eine Abfrage oder einen Bericht in einer Access-Datenbank in mehrere XML-Dateien zu exportieren. Die Abfrage würde ungefähr wie folgt aussehen. Meine Anforderung besteht darin, eine individuelle XML-Datei für jeden Standort zu exportieren. So hätte beispielsweise 236 eine eigene Datei, 1411 eine eigene, usw. und jede Datei würde nur die Datenzeilen für diesen Speicherort enthalten.Erstellen Sie mehrere XML-Dateien aus einer Access DB-Abfrage

enter image description here

Ich bin in der Lage, dies zu tun, wenn nach Excel zu exportieren, aber wenn ich auf XML ExportXML wechseln exportiert es die Dateien in Ordnung und Namen jede Datei nach Ort, wie ich (236.xml mag, 1411.xml, usw.), aber jede Datei enthält alle Daten (wird nicht nur an diesem Ort gefiltert). Mein VBA:

Dim rst As DAO.Recordset 

Set rst = CurrentDb.OpenRecordset("SELECT DISTINCT [Location] FROM [MyTable] ORDER BY [Location];", dbOpenSnapshot) 

Do While Not rst.EOF 
strRptFilter = "[Location] = " & rst![Location] 
Debug.Print "strRptFilter" 
ExportXML acExportTable, "MyTable", "FolderLocation" & "\" & rst![Location] & ".xml" 
DoEvents 
rst.MoveNext 
Loop 

rst.Close 
Set rst = Nothing 

Ist das möglich zu tun? Gehe ich alles falsch? Gibt es eine bessere Methode oder Lösung, um das zu erreichen, was ich brauche? Ich habe darüber nachgedacht, vielleicht eine loopende Abfrage zu erstellen, die die Abfrage erneut ausführt, die Filterkriterien ändert und nach Speicherort exportiert oder möglicherweise die gesamte Datei in XML exportiert und eine andere Möglichkeit zum Parsen der Datei findet. Ich bin offen für irgendwelche Ideen.

Antwort

0

Verwenden Sie Ihre strRptFilter Zeichenfolge als WhereCondition Option der Application.ExportXML Method.

Application.ExportXML ObjectType:=acExportTable, _ 
    DataSource:="MyTable", _ 
    DataTarget:="FolderLocation" & "\" & rst![Location] & ".xml", _ 
    WhereCondition:=strRptFilter 
+0

Das hat den Trick! Danke für die Hilfe! :) – Nate