XML mit Access, Teil 3

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

XML.mdb

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

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar