Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2006.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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

XML mit Access, Teil 2

Tom Jordan, Düsseldorf

Im ersten Teil dieser Beitragsreihe haben Sie Grundlagen zu XML kennen gelernt und erfahren, wie Sie eine Tabelle oder das Ergebnis einer Abfrage im XML-Format speichern können. Das Ganze funktioniert natürlich auch per VBA - wie, erfahren Sie im vorliegenden Beitrag. Außerdem lernen Sie weitere Techniken für den Umgang mit XML-Dateien kennen.

Vom Recordset zu XML
und zurück

Wenn man direkt aus dem Datenbankfenster Tabellen und die Ergebnisse von Abfragen in ein XML-Dokument speichern kann, dann sollte das wohl auch per VBA möglich sein. Genauso interessant ist natürlich die Möglichkeit, Daten aus XML-Dateien wieder in eine Access-Tabelle einzulesen.

Inhalt eines Recordsets im XML-Format abspeichern

Das Speichern von Datensätzen im XML-Format ist besonders dann sinnvoll, wenn Sie die Daten in einem Unicode-Textformat an einen Dritten übertragen möchten. Der Empfänger kann die Daten entweder mit dem eigenen XML-Parser öffnen und analysieren oder die Daten können mit ADO wieder in ein Recordset geschrieben werden. Der folgende Prozedurausschnitt aus Quellcode 1 zeigt das Erzeugen und Abspeichern eines Recordsets in eine XML-Datei.

Quellcode 1: Speichern einer Datensatzgruppe im XML-Format

Public Sub RecordsetZuXML()

    Dim rst As ADODB.Recordset

    Set rst = New ADODB.Recordset

    rst.CursorLocation = adUseClient

    rst.Open "Versandfirmen", _
        CurrentProject.Connection

    rst.Save "C:\Temp\Versandfirmen.xml", 
        adPersistXML

    rst.Close

End Sub

Bei der Save-Methode des Recordset-Objekts geben Sie einen Dateinamen sowie den Parameter adPersistXML an, um den Recordset als XML abzuspeichern. In diesem Fall erzeugt die Save-Methode die Datei C:\Temp\Versandfirmen.xml mit dem Inhalt aus Quellcode 2.

Beim ersten Blick scheinen in der XML-Datei viele überflüssige Daten enthalten zu sein. Warum das so ist und wie Sie Ihre eigene Struktur definieren können, erfahren Sie gleich im Abschnitt zu XML-Schemas. Zunächst wollen wir prüfen, ob wir die gerade erzeugte XML-Datei wieder einlesen können.

Quellcode 2: Ergebnis des Speicherns eines Recordsets im XML-Format

<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'

    xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'

    xmlns:rs='urn:schemas-microsoft-com:rowset'

    xmlns:z='#RowsetSchema'>

    <s:Schema id='RowsetSchema'>

        <s:ElementType name='row' content='eltOnly'>

            <s:AttributeType name='c0' rs:name='Firmen-Nr' rs:number='1' rs:maydefer='true'
            rs:writeunknown='true'>

                <s:datatype dt:type='int' dt:maxLength='4' rs:precision='10' 
                rs:fixedlength='true'/>

            </s:AttributeType>

            <s:AttributeType name='Firma' rs:number='2' rs:nullable='true' rs:maydefer='true' 
                rs:writeunknown='true'>

                <s:datatype dt:type='string' dt:maxLength='40'/>

            </s:AttributeType>

            <s:AttributeType name='Telefon' rs:number='3' rs:nullable='true' rs:maydefer='true' 
                rs:writeunknown='true'>

                <s:datatype dt:type='string' dt:maxLength='24'/>

            </s:AttributeType>

            <s:extends type='rs:rowbase'/>

        </s:ElementType>

    </s:Schema>

    <rs:data>

        <z:row c0='1' Firma='Speedy Express' Telefon='(503) 555-9831'/>

        <z:row c0='2' Firma='United Package' Telefon='(503) 555-3199'/>

        <z:row c0='3' Firma='Federal Shipping' Telefon='(503) 555-9931'/>

    </rs:data>

</xml>

XML-Daten wieder einlesen

Um die XML-Datei wieder zu öffnen und den Inhalt in ein Recordset-Objekt einzulesen, verwenden Sie eine Variante der Open-Methode, die Ihnen speziell zu diesem Zweck zur Verfügung steht (s. Quellcode 3).

Quellcode 3: XML-Datei in ein Recordset einlesen

Public Sub XMLZuRecordset()

    Dim rst As ADODB.Recordset

    Set rst = New ADODB.Recordset

    rst.Open "C:\Temp\Versandfirmen.xml", _

        "Provider=MSPersist;", _

        adOpenForwardOnly, _

        adLockReadOnly, _

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.