Zusammenfassung
Erzeugen Sie XML-Dateien aus Recordsets und umgekehrt und lernen Sie weitere Features von XML kennen.
Techniken
XML, Recordsets, XMLDOM, XPath
Voraussetzungen
Access 2000 und höher, MSXML 3.0
Beispieldateien
Tom Jordan, Düsseldorf
Wie Sie XML in Ihrer Access-Datenbank noch konkreter einsetzen können, erfahren Sie in diesem dritten und letzten Beitrag aus unserer XML-Serie. Hier präsentiert Access im Unternehmen Ihnen eine allgemeine Lösung zur Konvertierung einer Access-Tabelle nach XML (und zurück). Wie in den letzten Beiträgen werden dabei ADO und XMLDOM eingesetzt.
Obwohl ein ADO-Recordset die Möglichkeit bietet, Daten nach XML zu exportieren, können Sie das Format der resultierenden XML-Daten nicht beeinflussen. Daher die Frage, wie man selbst die Funktion „nachprogrammieren“ könnte. Mit dem XMLDOM ist es durchaus möglich, ein XML-Dokument nach der Struktur eines Recordsets zu erstellen und dieses mit Daten zu füllen.
Daten zusammenstellen
Bei dieser Lösung sollten Sie systematisch vorgehen und sich zuerst überlegen, wie die Daten zum Exportieren ermittelt und aufbereitet werden sollen. Im ersten Teil dieser Serie haben Sie ein Code-Beispiel kennen gelernt, in dem die Tabelle Versandfirmen (aus der Nordwind-Beispieldatenbank) mit der ADO-Bibliothek geöffnet wird.
Diese kleine Testprozedur erweitern Sie nun so, dass sie mit zwei Eingabeparametern namens TableName und ElementName versehen wird. Die Prozedur öffnet ein Recordset-Objekt mit der Tabelle, die im Eingabeparameter TableName übergeben wird, und gibt den Inhalt der Tabelle zunächst im Direktfenster aus (s. Quellcode 1).
Interessant bei dieser neuen Prozedur ExportToXML() ist die Verwendung der Fields-Auflistung, die jedes Recordset-Objekt enthält.
über diese Auflistung können Sie auf jedes Feld (über das Field-Objekt) der Datensatzgruppe zugreifen, ohne vorher zu wissen, wie die Felder benannt sind. Auf diese Weise wird bei jeder Iteration der While-Schleife jedes einzelne Feld ermittelt und sein Name und Wert ausgegeben. Am Ende der Iteration wird mit der MoveNext-Methode zum nächsten Datensatz gewechselt. Zum Schluss wird das Recordset-Objekt mit der Close-Methode geschlossen.
Das Ergebnis im Textformat
Diese Version der Prozedur gibt das unten stehende Ergebnis aus. Da Sie die Felder bei der Ausgabe eingerückt haben, haben Sie schon einen Eindruck davon, wie die XML-Datei aussehen wird:
Versandfirmen Versandfirma Firmen-Nr = 1 Firma = Speedy Express Telefon = (503) 555-9831 Versandfirma Firmen-Nr = 2 Firma = United Package Telefon = (503) 555-3199 Versandfirma Firmen-Nr = 3 Firma = Federal Shipping Telefon = (503) 555-9931
Quellcode 1: Inhalt einer Tabelle im Direktfenster ausgeben
Sub ExportToXML(ByVal TableName As String, ByVal ElementName As String) Dim rst As ADODB.Recordset Dim fld As ADODB.Field Set rst = New ADODB.Recordset rst.CursorLocation = adUseClient rst.Open TableName, CurrentProject.Connection Debug.Print TableName Do While Not rst.EOF Debug.Print vbTab & ElementName For Each fld In rst.Fields Debug.Print vbTab & vbTab & _ fld.Name & " = " & fld.Value Next ''fld rst.MoveNext Loop rst.Close End Sub
An der Spitze der Ausgabe steht der Tabellenname Versandfirmen, bei jeder Iteration der Elementname Versandfirma. Beide wurden ja als Eingabeparameter übergeben. Die unter jedem Versandfirma-Element stehenden Felder sind das Ergebnis des Durchlaufs der Fields-Auflistung.
Weiter geht“s mit XML
Die nächste Baustufe ist die Implementierung der XML-Komponente, die mit XMLDOM erledigt wird.
Die Export-Prozedur erstellt zunächst ein neues XML-Dokument, fügt diesem neue Knoten hinzu und füllt es anschließend mit den Tabellendaten aus dem Recordset.
Das Erstellen des Dokuments sowie seine obersten Elemente (Tabellenname) können Sie mit gerade mal zwei Zeilen Code erledigen:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo