Home > Artikel > Ausgabe 3/2019 > XML: Austausch mit Access-Bordmitteln

XML: Austausch mit Access-Bordmitteln

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Im Artikel XML: Eine Einführung haben wir uns angesehen, wie XML-Dokumente aufgebaut sind und was bei ihrer Erstellung zu beachten ist. In diesem Teil der Artikelreihe wollen wir uns ansehen, welche Möglichkeiten die Bordmittel von Access für die Erstellung und das Einlesen von XML-Dokumenten bieten. Dabei verwenden wir die Tabellen der Südsturm-Datenbank und schauen uns an, welche Ergebnisse wir beim Exportieren erhalten.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1903_XMLMitBordmitteln.accdb.

Tabelle exportieren

Wenn wir uns das Kontextmenü einer Tabelle im Navigationsbereich von Access ansehen, finden wir gleich die erste Möglichkeit, die Daten einer Tabelle im XML-Format zu exportieren.

Dazu wählen wir im Kontextmenü einfach den Eintrag Exportieren|XML-Datei aus (siehe Bild 1).

Export einer Tabelle in das XML-Format

Bild 1: Export einer Tabelle in das XML-Format

Im nächsten Schritt fragt Access den Speicherort für das zu exportierende XML-Dokument ab (siehe Bild 2), wo Sie sich Unterstützung durch einen Durchsuchen...-Dialog holen können.

Angabe des Speicherortes für das zu exportierende XML-Dokument

Bild 2: Angabe des Speicherortes für das zu exportierende XML-Dokument

Im folgenden Dialog wählen Sie dann aus, welche Informationen in der zu erstellenden XML-Datei gespeichert werden sollen (siehe Bild 3).

Festlegen der Optionen

Bild 3: Festlegen der Optionen

Hier haben Sie folgende Optionen zur Auswahl:

  • Daten (XML): Gibt die Daten aus, also eine XML-Datei mit Elementen und den Inhalten der Tabellenfelder
  • Schema der Daten (XSD): Legt fest, dass das Schema der Daten ausgegeben werden soll.
  • Präsentation der Daten (XSL): Gibt eine XSL-Datei zur Definition der Präsentation der Daten aus.

Sie können auch noch auf die Schaltfläche Weitere... klicken. Dies öffnet einen weiteren Dialog, mit dem Sie für die drei Optionen des vorherigen Dialogs weitere Optionen einstellen können.

Bild 4 zeigt etwa die Optionen für den Export der Daten in der XML-Datei. Hier können Sie auch nochmals explizit festlegen, ob Sie die Daten exportieren wollen. Außerdem zeigt der Bereich Zu exportierende Daten an, welche Tabellen noch mit der zu exportierenden Tabelle verknüpft sind und bietet die Möglichkeit, diese ebenfalls für den Export vorzusehen. Klicken Sie auf die Plus-Zeichen, um weitere aktuell nicht sichtbare Einträge einzublenden.

Weitere Optionen für den Export einer XML-Datei

Bild 4: Weitere Optionen für den Export einer XML-Datei

Codierung einstellen

Außerdem können Sie hier auch einstellen, unter welcher Codierung die exportierte XML-Datei gespeichert werden soll. Hier stehen die beiden Möglichkeiten UTF-8 und UTF-16 zur Auswahl.

Zu exportierende Datensätze einstellen

Der Bereich Zu exportierende Datensätze ist im Screenshot noch deaktiviert. Das liegt daran, dass die Tabelle mit den zu exportierenden Daten aktuell nicht geöffnet ist. Daher gibt es auch keinen bestehenden Filter und auch keinen aktuellen Datensatz. Zu Beispielzwecken wollen wir zunächst erst einmal einen Datensatz exportieren, deshalb schließen wir den Dialog wieder und öffnen erst einmal die Tabelle tblArtikel in der Datenblattansicht.

Wenn wir dann erneut den Kontextmenü-Eintrag Exportieren|XML-Datei auswählen, ist nun auch der Eintrag Aktueller Datensatz markiert. Die Option Bestehenden Filter anwenden ist jedoch immer noch deaktiviert. Damit wir diese nutzen können, müssen wir vor dem Öffnen des Dialogs einen Filter auf die Daten der Tabelle anwenden – zum Beispiel, indem wir nach den Datensätzen filtern, deren Artikelname mit dem Buchstaben C beginnt.

Sortierung einstellen

Wenn wir dann noch eine Sortierung für das Datenblatt einstellen, bevor wir den Kontextmenü-Befehl Exportieren|XML-Datei betätigen, aktiviert der Dialog auch noch die Option Bestehende Sortierung anwenden.

Unter diesen Einstellungen können wir den ersten Export testen – zunächst nur mit aktivierter Option Daten (XML) und nur für den aktuellen Datensatz (Option Aktueller Datensatz). Dabe erhalten wir die irreführende Meldung aus Bild 5. Diese erklärt, dass der aktuelle Datensatz nicht eindeutig war. Ich welcher Hinsicht, erläutert die Meldung nicht – aber sie ist irreführend, weil natürlich jeder Datensatz durch den eindeutigen Index im Primärschlüsselfeld eindeutig ist.

Irreführende Meldung

Bild 5: Irreführende Meldung

Erster Export

Das Ergebnis sieht jedenfalls wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?>

<dataroot xmlns:od="urn:schemas-microsoft- com:officedata" generated="2019-07-29T16:11:03">

<tblArtikel>

<ArtikelID>1</ArtikelID>

<Artikelname>Chai</Artikelname>

<LieferantID>1</LieferantID>

<KategorieID>1</KategorieID>

<Liefereinheit>10 Kartons x 20 Beutel</Liefereinheit>

<Einzelpreis>9</Einzelpreis>

<Lagerbestand>39</Lagerbestand>

<BestellteEinheiten>0</BestellteEinheiten>

<Mindestbestand>10</Mindestbestand>

<Auslaufartikel>0</Auslaufartikel>

</tblArtikel>

<tblArtikel>

...

</tblArtikel>

...

</dataroot>

Access erstellt also ein dataroot-Element, das als Wurzel-Element dient, und fügt darunter die einzelnen tblArtikel-Elemente ein, die jeweils einen Datensatz der Tabelle tblArtikel repräsentieren. Für jedes Feld der Tabelle wird dabei ein Unterelement im Element tblArtikel angelegt. Die Daten des jeweiligen Feldes landen dabei im jeweiligen Element.

Als Codierung wird UTF-8 angegeben – genau wie im Dialog mit den Export-Optionen angegeben war.

Test auf Sonderzeichen

Bevor wir weitere Optionen testen, wollen wir prüfen, was geschieht, wenn die Tabellenfelder Werte mit unzulässigen Sonderzeichen wie dem Größer- oder Kleiner-Zeichen enthalten. Dazu ändern wir den Wert des Feldes Artikelname im ersten Datensatz wie folgt:

Chai<Test>

Wenn wir den Export nun wiederholen, erhalten wir folgendes Ergebnis:

...

<tblArtikel>

<ArtikelID>1</ArtikelID>

<Artikelname>Chai<Test></Artikelname>

...

</tblArtikel>

...

Diese Sonderzeichen werden also schon einmal berücksichtigt.

Export mit verknüpften Tabellen

Da der Export-Dialog schon die Option anbietet, die Daten verknüpfter Tabellen gleich mit zu exportieren, wollen wir dies auch einmal ausprobieren.

Dazu markieren wir diesmal neben der Tabelle tblArtikel auch noch die verknüpften Tabellen tblBestelldetails und tblBestellungen sowie die Lookup-Tabellen tblLieferanten und tblKategorien (siehe Bild 6).

Einstellung für das nächste Export-Beispiel

Bild 6: Einstellung für das nächste Export-Beispiel

Wir haben die Tabelle zuvor geöffnet und nur nach dem Artikel Chai gefiltert. Da wir die Option Bestehenden Filter anwenden aktiviert haben, sollen nur die Daten für diesen einen Artikel exportiert werden.

Die so erstellte Datei enthält zunächst die Artikeldaten, wobei diese in Unterelementen namens tblBestelldetails die Einträge der Tabelle tblBestelldetails enthalten, die dem jeweiligen Artikel zugeordnet sind:

<?xml version="1.0" encoding="UTF-8"?>

<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2019-07-29T20:08:52">

<tblArtikel>

<ArtikelID>1</ArtikelID>

<Artikelname>Chai</Artikelname>

<LieferantID>1</LieferantID>

<KategorieID>1</KategorieID>

<Liefereinheit>10 Kartons x 20 Beutel</Liefereinheit>

<Einzelpreis>9</Einzelpreis>

<Lagerbestand>39</Lagerbestand>

<BestellteEinheiten>0</BestellteEinheiten>

<Mindestbestand>10</Mindestbestand>

<Auslaufartikel>0</Auslaufartikel>

<tblBestelldetails>

<BestellungID>10285</BestellungID>

<ArtikelID>1</ArtikelID>

<Einzelpreis>7.2</Einzelpreis>

<Anzahl>45</Anzahl>

<Rabatt>0.2</Rabatt>

</tblBestelldetails>

<tblBestelldetails>

...

</tblBestelldetails>

...

</tblArtikel>

Danach folgen alle Einträge der Tabelle tblBestellungen. Man sollte meinen, dass nur die Bestellungen ausgegeben werden, in denen auch der aktuelle Artikel vorkommt.

Offensichtlich werden aber alle Bestellungen ausgegeben:

<tblBestellungen>

<BestellungID>10248</BestellungID>

<KundeID>90</KundeID>

<PersonalID>5</PersonalID>

<Bestelldatum>1996-07-04T00:00:00</Bestelldatum>

<Lieferdatum>1996-08-01T00:00:00</Lieferdatum>

<Versanddatum>1996-07-16T00:00:00</Versanddatum>

<VersandUeber>3</VersandUeber>

<Frachtkosten>16.19</Frachtkosten>

<Empfaenger>Vins et alcools Chevalier</Empfaenger>

<Strasse>59 rue de l'Abbaye</Strasse>

<Ort>Reims</Ort>

<PLZ>51100</PLZ>

<Bestimmungsland>Frankreich</Bestimmungsland>

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!