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

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:


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar