Die Zahl der von Access unterstützten Formate für den Export und Import von Daten nimmt mit mit jeder neuen Version stetig ab. So strich man zuletzt etwa den dBase-Austausch. Anders beim XML-Format, das Microsoft offenbar wichtig genug erschien, um die Export-Optionen gar weiter auszubauen. In diesem Beitrag daher ein Rundblick über die Austauschmöglichkeiten…
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1509_XML.accdb
Wozu XML
Beim Import und Export von Datenbankobjekten haben Formate, wie Excel oder dBase, den Nachteil, dass sie auf proprietären Binärstrukturen aufsetzen, mit denen andere Anwendungen unter Umständen nichts anzufangen wissen. Bei XML ist das anders.
Es ist standardisiert, gut strukturiert, und lässt sich als Textformat grundsätzlich lesen. Aus diesem Grund hat XML zunehmend Bedeutung erlangt. Microsoft speichert etwa selbst Word- oder Excel-Dateien seit der Office-Version 2007 in diesem Format ab, erkennbar am Anhang: docx, xlsx. Auch zahlreiche Einstellungen der Oberfläche der Programme werden in XML-Strukturen untergebracht. Also ist auch der Austausch von Datenobjekten per XML eine Angelegenheit, die einigen Sinn macht, sei es für den Transfer von Objekten in andere Datenbanken, oder Backups für die aktuelle Datenbank, oder gar für die Weiterverarbeitung in Fremdanwendungen.
Hier geht es in erster Linie um den Austausch von Tabellen innerhalb von Access. Der Import von XML-Quellen aus anderen Anwendungen wäre ein weiteres Thema, das noch deutlich komplexer ausfiele, in diesem Rahmen aber nicht weiter diskutiert wird.
Export über die Oberfläche
Zum Exportieren eines Datenbankobjekts in eine XML-Datei bedienen Sie sich entweder des Menübands oder des Kontextmenüs. Aktivieren Sie den Registerreiter Externe Daten: Dort findet sich eine mit XML-Datei beschriftete Schaltfläche in der Gruppe Exportieren. Sie ist immer dann aktiviert, wenn im Navigationsbereich ein Objekt markiert ist, welches eine Datenquelle enthält oder enthalten kann. Also nicht nur bei Tabellen und Abfragen, sondern auch bei Formularen und Berichten. Das Gleiche gilt für den gleichlautenden Kontextmenüeintrag, welcher, wie in Bild 1, verschachtelt zum Vorschein kommt.
Bild 1: Exportieren einer Tabelle über das Kontextmenü im Navigationsbereich
Der Anschein der Möglichkeit, Formulare und Berichte ebenfalls exportieren zu können, trügt allerdings. Was bei diesem Vorgang ausgegeben wird, ist nicht der komplette Aufbau etwa eines Formulars, sondern lediglich die ihm zugrundeliegenden Daten, die ja aus einer Tabelle oder Abfrage stammen. Versuchen Sie das Formular frmIntro der Beispieldatenbank zu exportieren, so quittiert Access dies mit der Bemerkung, dass keine Formulare ohne Datenbindung für diesen Vorgang zugelassen seien. Denn allein die Datenquelle interessiert den XML-Export.
Markieren Sie also die Tabelle tblAdressen im Navigationsfenster und klicken Sie auf den Export-Button XML-Datei im Menüband. Das öffnet den Export-Dialog, wie in Bild 2. Access trägt in das Feld für den Dateinamen selbständig eine Bezeichnung ein, die sich aus dem Namen des Datenbankobjekts und der Endung .xml bildet. Der Pfad variiert dagegen je nach zuletzt getätigtem Ex- oder Import. Deshalb wählen Sie einen geeigneten Ausgabeort über den Dateiauswahl-Button Durchsuchen… rechts neben dem Feld aus.
Bild 2: Ausschnitt des Access-Dialogs zum Export eines Objekts in eine XML-Datei
Die Schaltfläche Weiter führt Sie zu einem Dialog, der einige Optionen für den Export abfragt, wie in Bild 3. Voreingestellt sind hier Daten und Schema. Daten exportiert den Inhalt der Datensätze, Schema erzeugt zusätzlich eine XSD-Datei im selben Verzeichnis, welche dann den gleichen Namen trägt, wie die XML-Datei. Diese XML-Schema-Datei beschreibt den Aufbau der Tabelle, sowie aller Felder, genau und verewigt hier auch alle Eigenschaften, wie Datentypen, Default-Werte oder Beschriftungen. Für den ersten Test deaktivieren wir diese Option und benennen nach dem Export die XML-Datei in tblAdressenOhneSchema.xml um. Der Export startet sofort bei Klick auf den OK-Button des Dialogs. Die Option zu Präsentation der Daten (XSL) lassen wir hier und auch im weiteren Verlauf des Beitrags außen vor. Sie hat für den reinen Datenaustausch keinerlei Bedeutung.
Bild 3: Abfrage der grundlegenden Export-Optionen
Wiederholen Sie den Vorgang und aktivieren nun die Schema-Option, wobei Sie es beim Namen tbladressen.xml für die exportierte Datei belassen.
Ziel dieses Unterfangen ist es, die XML-Dateien nachher zu importieren und dann zu begutachten, ob sich Unterschiede durch die Exportoptionen ergeben haben.
Ein Wort zur hier in allen Beispielen eingesetzten Tabelle tblAdressen, die auch schon in anderen Beispieldatenbanken für Access Basics zu finden ist. Diese wurde nämlich hier etwas aufgebohrt und mit weiteren Feldern versehen, die den Export etwas erschweren sollen. Da ist etwa das zusätzlich Feld Geburtsdatum, damit die Tabelle auch ein Feld des Datentyps Datum enthält. Und Vermoegen wurde, obgleich weitgehend sinnfrei, eingebaut, um ein Währungsfeld zu testen. Weiter ist das Feld Alter vom Typ Double. Schließlich hoffen wir den Export ins Schleudern bringen zu können, indem ein Anlagefeld Bild hinzugefügt wurde. Da es sich bei einer Anlage um eine obskure Angelegenheit mit verborgenden Detailtabellen handelt, ist der Export in ein einfaches Textformat, wie es bei XML vorliegt, nicht selbstverständlich. Wir sind gespannt, wie Access damit umgehen wird.
Außerdem gibt es drei Felder, die über eine ID auf andere Tabellen verweisen: Die Felder IDAnrede, IDOrt und IDLand sind Nachschlagefelder für die Tabellen tblAnreden, tblOrte und tblLaender. In der Datenblattansicht werden die entsprechenden Werte im jeweiligen Kombinationsfeld aus diesen Tabellen bezogen und korrekt angezeigt. Was macht der XML-Export daraus
Für den letzten Export-Test klicken Sie im Optionen-Dialog auf die Schaltfläche Weitere…, die zusätzliche Exporteinstellungen im nun erscheinenden Dialog erreichbar macht, wie in Bild 4 und Bild 5.
Bild 4: Erweiterte XML-Export-Optionen, erste Registerseite
Bild 5: Erweiterte XML-Export-Optionen, zweite Registerseite
Unter Zu exportierende Daten gibt es da einen kleinen Baum, der unter der natürlich aktivierten tblAdressen noch den Eintrag Daten nachschlagen verzeichnet. Und unter diesem sind pfiffig alle Tabellen aufgelistet, auf die die Haupttabelle über die Felder IDAnreden bis IDLaender zugreifen muss, um deren Nachschlagefelder füllen zu können.
Aktivieren Sie nun alle drei Detailtabellen im Dialog.
Eine andere Codierung vorzusehen, als UTF-8 – UTF-16 wäre die andere Option -, ist überflüssig. Das wäre nur dann sinnvoll, wenn die XML-Datei später von anderen Programmen bearbeitet werden sollte, die mit UTF-8 nichts anfangen können.
Auf der zweiten Registerseite des Dialogs (siehe Bild 5) geht es um den Export des Schemas der XML-Datei. Hier sind automatisch die beiden ersten Optionen aktiviert. Primärschlüssel- und Indexinformationen einschließen schreibt alle Indizes der Tabelle und deren Eigenschaften ins Schema.
Alle Tabellen- und Feldeigenschaften exportieren bewirkt, dass zusätzlich nicht nur die SQL-relevanten Informationen mit eingeschlossen werden – also Datentypen, Default-Werte, Einschränkungen, et cetera -, sondern sogar Ansichtseigenschaften, wie Feldbeschreibungen, Schriftart der Datenblattansicht, oder deren Farben. Lassen Sie beide Kontrollkästchen aktiv.
Interessant ist die letzte Option Schema in XML-Datei einbetten. Markieren Sie diese, so unterbleibt die Ausgabe der separaten XSD-Datei und deren Inhalt wird stattdessen in den Kopf der XML-Datei aufgenommen. Das ist unter Umständen praktischer, als die Aufteilung in zwei Dateien.
Nach dem Einstellen aller Optionen klicken Sie auf OK, wodurch Sie nicht etwa zum vorigen Dialogfenster zurückkehren, sondern der Export unmittelbar ausgeführt wird. Benennen Sie die exportierte XML-Datei diesmal in tblAdressen_PlusSchema.xml um. Nebenbei: Der Button Hilfe des Dialogs hat keine praktische Bedeutung. Wieder einmal öffnet sich damit die Access-Hilfe ohne erkennbaren Inhalt. Aber daran ist man ja mittlerweile gewöhnt…
Ergebnisse des XML-Exports
Wenn Sie sich die Mühe sparen möchten, die beschriebenen Exportvorgänge alle selbst durchzuführen, so finden die exportierten XML-Dateien auch begleitend zur Beispieldatenbank im gleichen Verzeichnis.
Zwar möchten wir die Dateien in erster Linie wieder reimportieren, aber ein erster Blick in ihr Innenleben kann nicht schaden. Dabei stellt sich die Frage, welches Instrument uns hier zur Verfügung steht
Da es sich um Textdateien handelt, könnte Notepad das Mittel der Wahl sein. Mit so großen Dateien – 3 bis 4 MB immerhin – hat es in der Regel jedoch einige Mühe. Erheblich besser geeignet ist etwa das freie Notepad++, welches außerdem automatisch Unterstützung für XML-Dateien mitbringt und XML-Tags und -Inhalte farblich markiert. Plug-Ins ermöglichen zudem speziellere XML-Aufgaben, wie das Einrücken der Tags. Auch der für Dateien mit der Endung .xml ohnehin häufig voreingestellte Internet Explorer kommt infrage, der ebenfalls die Struktur der XML-Dateien farblich aufwertet und einen hierarchischen Baum darstellt.
Am besten fährt man natürlich mit speziellen XML-Editoren, die allerdings in guter Qualität nicht kostenlos zu haben sind. Der Autor verwendet etwa die Stylus Studio XML Suite, welche für einige Screenshots zur Anwendung kam.
Nehmen wir uns ein Extrakt der tblAdressen.xml vor, nämlich einen exportierten Datensatz in ihr, wie in Listing 1. Der Hauptknoten des Dokuments trägt immer den Namen dataroot, in dem als Attribute allerlei Namespace-Verweise (xmlns) eingetragen sind, wobei auffällt, dass der Dateiname der Schemadatei tblAdressen.xsd explizit mit aufgenommen ist. Zum Vergleich ein Datensatz aus der Datei tblAdressenOhneSchema.xml in Listing 2. Hier fehlen dann tatsächlich alle weiteren Namespace-Angaben im Kopf, bis auf das Standardschema officedata, auf welches allerdings im weiteren Dokument keinerlei Bezug genommen wird. Auf die Folgen kommen wir noch zu sprechen.
17 6 Fetzer Armin +49 710461725 Armin.Fetzer@yahoo.de 1982-01-14T00:00:00 33.67 16000
Listing 1: Ein Datensatz der XML-exportierten Tabelle tblAdressen
Der Aufbau beider Dateien ist ansonsten gleich. tblAdressen ist der erste Unterknoten des Dokuments, der gleichzeitig jeweils einen Datensatz darstellt. Ihm folgen die einzelnen Felder, wobei auffällt, dass sich deren Anzahl unterscheidet. Tatsächlich werden nur jede Felder in einen XML-Datensatz aufgenommen, die nicht leer waren. Damit Sie auch einen Datensatz mit bestücktem Anlagefeld zu Gesicht bekommen, steht ein solcher in Listing 3. Dem XML-Tag Bild für das Anlagefeld folgen weitere Unterknoten, wobei die eigentlichen Bilddaten in FileData stehen. Es handelt sich hier um eine base64-kodierte Darstellung des binären Inhalts, welche im Listing deutlich gekürzt wurde.
13 12 Derfert Daniela Neckarstr. 22 33613 331 10 +49 775522 1949-12-22T00:00:00 65.75 30000 FAAAAAEAAAAEAAAAagBwAGcAAAD/2P/gABBKRklGAA ECAABkAGQAAP/sABFEdWNreQABAAQAAAAaAAD/7gAOQWRvYmUAZMAAAAAB/9sAhA IiIiInNjAzLCwsMzA7OzY2OztBQUFBQUFBQUFBQUFBQUH/wAARCAANAA0DASIAAh EBAxEB/8QAZwAAAwEAAAAAAAAAAAAAAAAAAgMEBQEBAQAAAAAAAAAAAAAAAAAAAw xCYKVuAYAJgU5F4a+lOF1OCEqpTmFXSAXxlKZnjNhA9itX7Jk4DbkcqAi93d7Sqv b0NnWEA95n/9k= vert.jpg jpg
Listing 3: Ein Datensatz mit Anlage in der exportierten XML-Datei
Soweit die Textform der XML-Dateien. Um Ihnen eine Vorstellung zu geben, was ein XML-Viewer aus diesen Daten macht, findet sich in Bild 6 ein Screenshot aus Stylus Studio, der die Schema-Struktur eines Datensatzes aufzeigt. Sie sieht nicht viel anders aus, als in der Textform; aber das ist ein gutes Zeichen dafür, dass auch andere Programme mit dem Inhalt der XML-Datei zurechtkommen und sie nicht falsch interpretieren. Denn es gibt viele verschiedene Möglichkeiten, um tabellarische Daten in XML darzustellen.
Bild 6: Teil des exportierten XML-Schemas in Stylus Studio
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: