{"id":55000332,"date":"2006-04-01T00:00:00","date_gmt":"2020-05-06T15:18:17","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=332"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"XML_mit_Access_Teil_2","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/","title":{"rendered":"XML mit Access, Teil 2"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Erzeugen Sie XML-Dateien aus Recordsets und umgekehrt und lernen Sie weitere Features von XML kennen.<\/p>\n<h3>Techniken<\/h3>\n<p>XML, Recordsets, XMLDOM, XPath<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 2000 und h&ouml;her, MSXML 3.0<\/p>\n<h3>Beispieldateien<\/h3>\n<p><a href=''fileadmin\/files\/acc0206gl03.zip''>XML.mdb<\/a><\/p>\n<h3><\/h3>\n<p><b>Tom Jordan, D&uuml;sseldorf<\/b><\/p>\n<p><b>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&ouml;nnen. Das Ganze funktioniert nat&uuml;rlich auch per VBA &#8211; wie, erfahren Sie im vorliegenden Beitrag. Au&szlig;erdem lernen Sie weitere Techniken f&uuml;r den Umgang mit XML-Dateien kennen.<\/b><\/p>\n<p>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&ouml;glich sein. Genauso interessant ist nat&uuml;rlich die M&ouml;glichkeit, Daten aus XML-Dateien wieder in eine Access-Tabelle einzulesen.<\/p>\n<h2>Inhalt eines Recordsets im XML-Format abspeichern<\/h2>\n<p>Das Speichern von Datens&auml;tzen im XML-Format ist besonders dann sinnvoll, wenn Sie die Daten in einem Unicode-Textformat an einen Dritten &uuml;bertragen m&ouml;chten. Der Empf&auml;nger kann die Daten entweder mit dem eigenen XML-Parser &ouml;ffnen und analysieren oder die Daten k&ouml;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.<\/p>\n<p><b>Quellcode 1: Speichern einer Datensatzgruppe im XML-Format<\/b><\/p>\n<pre>Public Sub RecordsetZuXML()\r\n    Dim rst As ADODB.Recordset\r\n    Set rst = New ADODB.Recordset\r\n    rst.CursorLocation = adUseClient\r\n    rst.Open \"Versandfirmen\", _        CurrentProject.Connection\r\n    rst.Save \"C:\\Temp\\Versandfirmen.xml\",         adPersistXML\r\n    rst.Close\r\nEnd Sub<\/pre>\n<p>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.<\/p>\n<p>Beim ersten Blick scheinen in der XML-Datei viele &uuml;berfl&uuml;ssige Daten enthalten zu sein. Warum das so ist und wie Sie Ihre eigene Struktur definieren k&ouml;nnen, erfahren Sie gleich im Abschnitt zu XML-Schemas. Zun&auml;chst wollen wir pr&uuml;fen, ob wir die gerade erzeugte XML-Datei wieder einlesen k&ouml;nnen.<\/p>\n<p><b>Quellcode 2: Ergebnis des Speicherns eines Recordsets im XML-Format<\/b><\/p>\n<pre>&lt;xml xmlns:s=''uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882''\r\n    xmlns:dt=''uuid:C2F41010-65B3-11d1-A29F-00AA00C14882''\r\n    xmlns:rs=''urn:schemas-microsoft-com:rowset''\r\n    xmlns:z=''#RowsetSchema''&gt;\r\n    &lt;s:Schema id=''RowsetSchema''&gt;\r\n        &lt;s:ElementType name=''row'' content=''eltOnly''&gt;\r\n            &lt;s:AttributeType name=''c0'' rs:name=''Firmen-Nr'' rs:number=''1'' rs:maydefer=''true''            rs:writeunknown=''true''&gt;\r\n                &lt;s:datatype dt:type=''int'' dt:maxLength=''4'' rs:precision=''10''                 rs:fixedlength=''true''\/&gt;\r\n            &lt;\/s:AttributeType&gt;\r\n            &lt;s:AttributeType name=''Firma'' rs:number=''2'' rs:nullable=''true'' rs:maydefer=''true''                 rs:writeunknown=''true''&gt;\r\n                &lt;s:datatype dt:type=''string'' dt:maxLength=''40''\/&gt;\r\n            &lt;\/s:AttributeType&gt;\r\n            &lt;s:AttributeType name=''Telefon'' rs:number=''3'' rs:nullable=''true'' rs:maydefer=''true''                 rs:writeunknown=''true''&gt;\r\n                &lt;s:datatype dt:type=''string'' dt:maxLength=''24''\/&gt;\r\n            &lt;\/s:AttributeType&gt;\r\n            &lt;s:extends type=''rs:rowbase''\/&gt;\r\n        &lt;\/s:ElementType&gt;\r\n    &lt;\/s:Schema&gt;\r\n    &lt;rs:data&gt;\r\n        &lt;z:row c0=''1'' Firma=''Speedy Express'' Telefon=''(503) 555-9831''\/&gt;\r\n        &lt;z:row c0=''2'' Firma=''United Package'' Telefon=''(503) 555-3199''\/&gt;\r\n        &lt;z:row c0=''3'' Firma=''Federal Shipping'' Telefon=''(503) 555-9931''\/&gt;\r\n    &lt;\/rs:data&gt;\r\n&lt;\/xml&gt;<\/pre>\n<h2>XML-Daten wieder einlesen<\/h2>\n<p>Um die XML-Datei wieder zu &ouml;ffnen und den Inhalt in ein Recordset-Objekt einzulesen, verwenden Sie eine Variante der Open-Methode, die Ihnen speziell zu diesem Zweck zur Verf&uuml;gung steht (s. Quellcode 3).<\/p>\n<p><b>Quellcode 3: XML-Datei in ein Recordset einlesen<\/b><\/p>\n<pre>Public Sub XMLZuRecordset()\r\n    Dim rst As ADODB.Recordset\r\n    Set rst = New ADODB.Recordset\r\n    rst.Open \"C:\\Temp\\Versandfirmen.xml\", _\r\n        \"Provider=MSPersist;\", _\r\n        adOpenForwardOnly, _\r\n        adLockReadOnly, _\r\n        adCmdFile\r\n    rst.Close\r\nEnd Sub<\/pre>\n<p>Wenn eine externe Datei aus dem Filesystem eingelesen werden soll, k&uuml;mmert sich der Provider MSPersist um die Details der Dateioperationen (&ouml;ffnen, st&uuml;ckweise einlesen, schlie&szlig;en und so weiter). Der letzte Parameter der Open-Methode adCmdFile signalisiert, dass es sich um eine Datei au&szlig;erhalb der Access-Umgebung handelt.<\/p>\n<p>Die im vorigen Beispiel erzeugte XML-Datei enth&auml;lt erst am Ende die eigentlichen Tabellendaten, im ersten Teil finden Sie jede Menge Informationen zum Tabellenentwurf. Diese Informationen ben&ouml;tigt ADO, um das Recordset beim Einlesen aus der XML-Datei von Grund auf wieder aufzubauen. Da ein Recordset ja auch Feld- und Datentypinformation enth&auml;lt, m&uuml;ssen diese Infos auch hinterlegt werden. Die allgemeine Struktur dieser XML-Datei wird von Microsoft festgelegt, wie die erste Zeile zeigt: Hier finden Sie Informationen &uuml;ber das Schema, auf dem das Dokument basiert.<\/p>\n<h2>XML-Schema definieren<\/h2>\n<p><!--30percent--><\/p>\n<p>Ein XML-Schema ist ein Dokument, das Regeln zu Struktur und Inhalt eines XML-Dokuments definiert. Ein Schema legt etwa die erlaubten Elemente eines XML-Dokuments, die erlaubten Attribute eines Elements, die Anzahl der erlaubten Element-Wiederholungen und die Reihenfolge der Elemente fest. <\/p>\n<p>XML-Schemata liegen selbst im XML-Format vor und dienen dem Festlegen einer festen Datenstruktur bei XML-Dokumenten f&uuml;r den gleichen Einsatzzweck. Beispielsweise k&ouml;nnten alle XML-Dokumente mit Daten zu medizinischen Proben an einer Universit&auml;t auf einem gemeinsamen Schema basieren. Wenn der Leser ein solches XML-Dokument &ouml;ffnet und analysiert, welches bereits gegen das Schema gepr&uuml;ft wurde, sind die Datenelemente vorzeitig bekannt. Auf diese Weise kann auf eine aufw&auml;ndige Fehlerbehandlung beim Lesen verzichtet werden.<\/p>\n<h2>Das Recordset-Schema<\/h2>\n<p>Das erzeugte XML-Dokument Versandfirmen.xml enth&auml;lt in den ersten Zeilen einen Verweis auf Schema-Informationen, die dieses Dokument als Recordset identifiziert. Wenn Sie diese Schema-Information vorfinden, k&ouml;nnen Sie sicher davon ausgehen, dass Elemente wie ElementType, AttributeType, data und row vorhanden sind. Auf diese Elemente k&ouml;nnen Sie dann explizit zugreifen.<\/p>\n<h2>Der Weg zur eigenen XML-Struktur<\/h2>\n<p>Die vorherigen Beispiele zeigen Ihnen ein paar XML-Basisfunktionen von Access rund um das Thema Recordsets. Wenn Sie allerdings spezielle Anforderungen an den Datentaustausch haben, sollten Sie unbedingt einen Blick auf das XMLDOM (Document Object Model) werfen.<\/p>\n<p>Das XMLDOM umfasst eine Reihe Methoden, die Ihnen den programmatischen Zugriff auf XML-Dokumente erlauben. Da die Tags in einem XML-Dokument eine gewisse Struktur beziehungsweise Hierarchie wiedergeben, ist der Umgang mit einem solchen Dokument mit dem XMLDOM relativ einfach. Die Objekte im XMLDOM sind n&auml;mlich ebenfalls strukturiert, sodass Sie auch mit l&auml;ngeren Dokumenten schnell zurechtkommen.<\/p>\n<h2>Das XMLDOM in Access einbinden<\/h2>\n<p>Um das XMLDOM in Ihrer Access-Datenbank verwenden zu k&ouml;nnen, brauchen Sie zun&auml;chst einen Verweis auf die entsprechende Bibliothek. Dazu &ouml;ffnen Sie ein beliebiges Modul und w&auml;hlen den Men&uuml;befehl Extras\/Verweise&#8230; aus (siehe Bild 1). Aktivieren Sie die Bibliothek Microsoft XML, v3.0 (oder h&ouml;her) und schlie&szlig;en Sie den Dialog wieder.<\/p>\n<p><IMG height=\"365\" src=\"..\/fileadmin\/_temp_\/{0393E2DF-BF98-44AA-8E2A-B4C7D8FBE724}\/pic001.png\" width=\"467\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Microsoft XML als Verweis einbinden<\/span><\/b><\/p>\n<p>Im Kontext des XML Objekt-Modells besteht ein Dokument aus Knoten (Node-Objekten in VBA), die wiederum Unterknoten enthalten k&ouml;nnen und somit eine Baumstruktur ergeben. Das Node-Objekt umfasst alle Arten von Knoten eines Dokuments, inklusive Elementen, Attributen, Texten, Kommentaren und so weiter. Die gesamte Struktur und M&ouml;glichkeiten des XMLDOM sind relativ umfangreich, sodass diese Einf&uuml;hrung nur einen groben Einblick geben kann.<\/p>\n<h2>Erste Schritte: Ein XML-Dokument &ouml;ffnen und validieren<\/h2>\n<p>Im VBA-Code erhalten Sie Zugang zu einem XML-Dokument &uuml;ber das Objekt DOMDocument. &uuml;ber dieses Objekt wird eine XML-Datei aus dem Filesystem ge&ouml;ffnet, validiert und gegebenenfalls wieder gespeichert. Vom DOMDocument aus greifen Sie auf den Dokumentinhalt (also etwa Elemente oder Attribute) &uuml;ber das untergeordnete Objekt documentElement zu, das den weiteren Zugang auf die einzelnen Node-Objekte erlaubt. Das Listing aus Quellcode 4 zeigt diese Schritte im Einzelnen.<\/p>\n<p><b>Quellcode 4: Einlesen eines XML-Dokuments per VBA und DOM<\/b><\/p>\n<pre>Sub XMLDokumentPerDOMEinlesen()\r\n  Dim doc As MSXML2.DOMDocument\r\n  Dim lNodeCount As Long\r\n  '' Dokument-Objekt erstellen\r\n  Set doc = New MSXML2.DOMDocument\r\n  '' Validierung einschalten\r\n  doc.validateOnParse = True\r\n  '' XML-Datei aus Filesystem laden\r\n  doc.Load _    \"C:\\Projects\\Artikel\\XML\\Sample.xml\"\r\n  If doc.parseError.errorCode &lt;&gt; 0 Then\r\n    '' Grund warum ung&uuml;ltig ausgeben\r\n    Debug.Print doc.parseError.reason\r\n  Else\r\n    lNodeCount = _      doc.documentElement.childNodes.Length\r\n    Debug.Print lNodeCount\r\n    Debug.Print _    doc.documentElement.childNodes(0).nodeName\r\n  End If\r\nEnd Sub<\/pre>\n<p>Nachdem das DOMDocument erstellt wird, wird die Datei mit der Load-Methode geladen. &uuml;ber das documentElement k&ouml;nnen Sie dann die Anzahl der Elemente in der childNodes-Auflistung im Direktfenster ausgeben lassen.<\/p>\n<p>Das Beispieldokument Sample.xml sieht wie in Quellcode 5 aus.<\/p>\n<p><b>Quellcode 5: Beispiel-XML-Datei<\/b><\/p>\n<pre>&lt;Filiale&gt;\r\n &lt;Kunden&gt;\r\n  &lt;Kunde KD-NR=\"459\"&gt;\r\n    &lt;Nachname&gt;Jordan&lt;\/Nachname&gt;\r\n    &lt;Vorname&gt;Tom&lt;\/Vorname&gt;\r\n    &lt;Bestellungen&gt;\r\n     &lt;Bestellung Bestell-NR=\"854\"&gt;\r\n       &lt;Datum&gt;07.12.2005&lt;\/Datum&gt;\r\n     &lt;\/Bestellung&gt;\r\n    &lt;\/Bestellungen&gt;\r\n  &lt;\/Kunde&gt;\r\n  &lt;Kunde KD-NR=\"460\"&gt;\r\n    &lt;Nachname&gt;Bauer&lt;\/Nachname&gt;\r\n    &lt;Vorname&gt;Dirk&lt;\/Vorname&gt;\r\n    &lt;Bestellungen \/&gt;\r\n  &lt;\/Kunde&gt;\r\n &lt;\/Kunden&gt;\r\n&lt;\/Filiale&gt;<\/pre>\n<p>Im Gegensatz zu anderen Auflistungen (Collections in VBA), die Sie vielleicht schon mal mit der Count-Eigenschaft durchgez&auml;hlt haben, verwenden Sie hier die length-Eigenschaft bei allen XMLDOM-Auflistungen: Eine Count-Eigenschaft suchen Sie also vergeblich. Wenn Sie die Anzahl der Knoten des documentElement-Objekts abfragen, bekommen Sie als Ergebnis nur die Anzahl der Elemente in der obersten Ebene. In unserem Beispieldokument mit den Filialen und Kunden w&auml;ren das die Kunden-Elemente (das Element Filiale geh&ouml;rt ja zum documentElement). F&uuml;r die Gesamtzahl der Knoten m&uuml;ssten Sie schon rekursiv vorgehen und alle Unterknoten eines Elements durchz&auml;hlen, so als ob Sie die Anzahl der Dateien Ihrer gesamten Festplatte manuell nachz&auml;hlten.<\/p>\n<p>Beim Laden einer Datei ist es eventuell w&uuml;nschenswert, das Dokument gleichzeitig zu validieren. Mit der Eigenschaft validateOnParse des DOMDocument-Objekts k&ouml;nnen Sie sich zumindest vergewissern, dass das Dokument &#8222;well-formed&#8220; ist. Wenn nicht, teilt Ihnen das Objekt parseError den Grund der ung&uuml;ltigen Struktur mit.<\/p>\n<p>Wenn beim Laden des Dokuments alles glatt l&auml;uft, hat die errorCode-Eigenschaft des parseError-Objekts den Wert 0. Ansonsten k&ouml;nnen Sie die Fehlermeldung mit der reason-Eigenschaft abfragen.<\/p>\n<h2>Knoten mit XPath selektieren<\/h2>\n<p>Ist das Dokument einmal geladen und validiert, k&ouml;nnen wir den Inhalt des Dokuments etwas n&auml;her inspizieren. Obwohl die childNodes-Auflistung eine gute Quelle f&uuml;r allgemeine Informationen zu den Unterelementen eines Knotens bietet, werden Sie in den meisten F&auml;llen auf ganz bestimmte Knoten zugreifen wollen. Dazu verf&uuml;gt das XMLDOM &uuml;ber zwei wichtige Methoden namens selectNodes und selectSingleNode. Die Methode selectNodes gibt ebenfalls eine Auflistung von Node-Objekten als Ergebnis zur&uuml;ck, wobei Sie die Kriterien f&uuml;r die Auswahl angeben k&ouml;nnen.<\/p>\n<p>M&ouml;chten Sie beispielsweise alle Kunde-Elemente zusammenstellen, so w&uuml;rden Sie selectNodes wie folgt aufrufen (in einer Zeile):<\/p>\n<p><b>Quellcode 6: Ausgeben von Kundendaten<\/b><\/p>\n<pre>Public Sub KundendatenAusgeben()\r\n    Dim doc As MSXML2.DOMDocument\r\n    Dim nodeList As MSXML2.IXMLDOMNodeList\r\n    Dim node As MSXML2.IXMLDOMNode\r\n    '' Dokument-Objekt erstellen\r\n    Set doc = New MSXML2.DOMDocument\r\n    '' XML-Datei aus Filesystem laden\r\n    doc.Load \"C:\\Projects\\Artikel\\XML\\Sample.xml\"\r\n    Set nodeList = doc.documentElement.selectNodes(\"Kunden\/Kunde\")\r\n    For Each node In nodeList\r\n        Debug.Print node.Attributes.getNamedItem(\"KD-NR\").Text\r\n        Debug.Print vbTab & node.selectSingleNode(\"Nachname\").Text & \", \" _            & node.selectSingleNode(\"Vorname\").Text\r\n    Next ''node\r\nEnd Sub\r\nSet nodeList = doc.documentElement.selectNodes(\"Kunden\/Kunde\")\r\n<\/pre>\n<p>Die Variable nodeList ist vom Datentyp MSXML2.IXMLDOMNodeList, wie Sie im n&auml;chsten Codebeispiel gleich sehen werden. Die Auswahlkriterien &#8222;Kunden\/Kunde&#8220; bestimmen sozusagen den Pfad zu den XML-Daten, die Sie gerne abfragen m&ouml;chten. Innerhalb einer Ebene, zum Beispiel bei den Kunde-Elementen, k&ouml;nnen Sie die Auswahl ebenfalls einschr&auml;nken, so wie bei einer Access-Abfrage. <\/p>\n<p>W&auml;hrend selectNodes immer einen Satz von Node-Objekten zur&uuml;ckliefert, gibt selectSingleNode immer ein einziges Node-Objekt als Ergebnis zur&uuml;ck. Mit beiden Varianten k&ouml;nnen Sie beliebige Auswahlkriterien angeben.<\/p>\n<p>Die standardisierte Syntax hinter diesen Auswahlkriterien tr&auml;gt den Namen XPath und hat sich als recht flexibel erwiesen. sBeispielsweise k&ouml;nnen Sie mit selectSingleNode und dem folgenden XPath-Ausdruck explizit auf den Kunden Nr. 460 zugreifen (in einer Zeile):<\/p>\n<pre>set node = doc.documentElement.selectSingleNode(\"Kunden\/Kunde[@KD-NR=''460'']\")<\/pre>\n<p>Damit k&ouml;nnen Sie einen bestimmten Kunden, der den Datentyp MSXML2.IXMLDOMNode hat, genauer unter die Lupe nehmen. Wie Sie alle Kunden durchlaufen und die Daten zu jedem einzelnen Kunden ausgeben k&ouml;nnen, zeigt das Listing aus Quellcode 6. Wie auch im vorherigen Beispiel wird das Dokument erst mal ge&ouml;ffnet und mit selectNodes werden alle Kunden in einer NodeList zusammengestellt. In einer For-Schleife wird mithilfe der selectSingleNode-Methode auf weitere Unterelemente des Kunde-Elements zugegriffen, um den Nach- und Vornamen auszugeben.<\/p>\n<p>Die Eigenschaft Text eines Node-Objekts enth&auml;lt die eigentlichen Daten des Knotens. Dies entspr&auml;che dem Feldinhalt aus einer Access-Tabelle.  Grunds&auml;tzlich &auml;hnelt diese Vorgehensweise einer Access-Abfrage, in der Sie Auswahlkriterien angeben und Datens&auml;tze ausgeben. Wie Sie eine konkrete Verbindung zwischen einer Access-Tabelle und einem XML-Dokument definieren k&ouml;nnen, erfahren Sie im n&auml;chsten Beitrag dieser Serie.<\/p>\n<p>Im zweiten Beitrag der XML-Serie haben Sie konkrete Praxisbeispiele mit XML kennen gelernt. Das Speichern und Einlesen von XML in Recordset-Objekte mit VBA stellt eine gute Basis f&uuml;r die Zusammenarbeit zwischen Access und XML dar. Der Einsatz von XML-Schemas und XPath geben Ihnen das Werkzeug zur Feinarbeit.<\/p>\n<p>Im dritten und letzten Beitrag gehen Sie einen Schritt weiter und erfahren anhand eines weiteren Praxisbeispiels, wie die Konvertierung zwischen Access-Tabellen und XML ganz nach Ihren Bed&uuml;rfnissen funktioniert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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&ouml;nnen. Das Ganze funktioniert nat&uuml;rlich auch per VBA &#8211; wie, erfahren Sie im vorliegenden Beitrag. Au&szlig;erdem lernen Sie weitere Techniken f&uuml;r den Umgang mit XML-Dateien kennen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66022006,662006,44000026,44000025],"tags":[],"class_list":["post-55000332","post","type-post","status-publish","format-standard","hentry","category-66022006","category-662006","category-Interaktiv","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>XML mit Access, Teil 2 - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"XML mit Access, Teil 2\" \/>\n<meta property=\"og:description\" content=\"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&ouml;nnen. Das Ganze funktioniert nat&uuml;rlich auch per VBA - wie, erfahren Sie im vorliegenden Beitrag. Au&szlig;erdem lernen Sie weitere Techniken f&uuml;r den Umgang mit XML-Dateien kennen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:18:17+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"XML mit Access, Teil 2\",\"datePublished\":\"2020-05-06T15:18:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/\"},\"wordCount\":1727,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/09ad609d587140a8a1f1b0fd3d1b62f7\",\"articleSection\":[\"2\\\/2006\",\"2006\",\"Interaktiv\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/\",\"name\":\"XML mit Access, Teil 2 - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/09ad609d587140a8a1f1b0fd3d1b62f7\",\"datePublished\":\"2020-05-06T15:18:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/09ad609d587140a8a1f1b0fd3d1b62f7\",\"contentUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/09ad609d587140a8a1f1b0fd3d1b62f7\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/XML_mit_Access_Teil_2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"XML mit Access, Teil 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"XML mit Access, Teil 2 - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/","og_locale":"de_DE","og_type":"article","og_title":"XML mit Access, Teil 2","og_description":"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&ouml;nnen. Das Ganze funktioniert nat&uuml;rlich auch per VBA - wie, erfahren Sie im vorliegenden Beitrag. Au&szlig;erdem lernen Sie weitere Techniken f&uuml;r den Umgang mit XML-Dateien kennen.","og_url":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:18:17+00:00","og_image":[{"url":"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"XML mit Access, Teil 2","datePublished":"2020-05-06T15:18:17+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/"},"wordCount":1727,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7","articleSection":["2\/2006","2006","Interaktiv","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/","url":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/","name":"XML mit Access, Teil 2 - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7","datePublished":"2020-05-06T15:18:17+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#primaryimage","url":"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7","contentUrl":"http:\/\/vg03.met.vgwort.de\/na\/09ad609d587140a8a1f1b0fd3d1b62f7"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/XML_mit_Access_Teil_2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"XML mit Access, Teil 2"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000332"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000332\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}