{"id":55000362,"date":"2006-06-01T00:00:00","date_gmt":"2021-02-11T20:54:38","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=362"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"RSSFeed_mit_Access","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/","title":{"rendered":"RSS-Feed mit Access"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Lesen und verwalten Sie Ihre Lieblingsnachrichten mit einer Access-Datenbank.<\/p>\n<h3>Techniken<\/h3>\n<p>VBA, XML, RSS<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 2000 und h&ouml;her<\/p>\n<h3>Beispieldatei<\/h3>\n<p>RSSNewsReader.mdb<\/p>\n<h3><\/h3>\n<p><b>Dirk Bauer, D&uuml;sseldorf<\/b><\/p>\n<p><b>RSS ist in kurzer Zeit zum Synonym f&uuml;r aktuelle Meldungen aus dem Internet geworden. Falls Sie mehr &uuml;ber die zugrunde liegende Technik erfahren m&ouml;chten oder beliebige, &ouml;ffentliche RSS-Feeds in Ihre eigene Access-Anwendung integrieren wollen, bietet Ihnen dieser Artikel die notwendigen Hintergr&uuml;nde und L&ouml;sungsans&auml;tze. Zus&auml;tzlich k&ouml;nnen Sie die hier beschriebene L&ouml;sung direkt einsetzen und Informationen aus den gew&uuml;nschten Nachrichtenkan&auml;len in eine Access-Datenbank einlesen.<\/b><\/p>\n<p>RSS ist die Abk&uuml;rzung f&uuml;r Really Simple Syndication und kann mit &#8222;echt einfache Verbreitung&#8220; &uuml;bersetzt werden. Der Anwender ist mit Hilfe eines RSS-Readers in der Lage, ganze Webseiten oder Teile davon zu &#8222;abonnieren&#8220; und regelm&auml;&szlig;ig Updates der Inhalte zu beziehen.<\/p>\n<p>RSS wird in so genannten RSS-Feeds oder Nachrichten versendet. RSS-Feeds sind textbasierte Informationen, die in jeweils verschiedenen RSS-Versionen standardisiert worden sind. Dabei ist ein RSS-Feed technisch gesehen nichts anderes als eine XML-Datei mit einem definierten Schema.<\/p>\n<p>Eine Nachricht besteht in der Regel aus einem Titel, einem kurzen Text sowie einem Link, der weiterf&uuml;hrende Informationen zu der Nachricht enth&auml;lt.<\/p>\n<p><b>Einsatzgebiete f&uuml;r RSS-Feeds<\/b><\/p>\n<p>Seit einigen Jahren ist es immer popul&auml;rer geworden, auf Webseiten so genannte RSS-Feeds anzubieten. Mit Sicherheit werden Sie schon einmal Verweise zu RSS-Feeds auf einer Webseite gesehen haben. <\/p>\n<p>RSS wird allgemein als eine der ersten Anwendungen bewertet, die f&uuml;r ein so genanntes semantisches Web stehen. In einem semantischen Web sollen Inhalte automatisiert von Maschinen eingelesen und weiterverarbeitet werden k&ouml;nnen.<\/p>\n<p><b>Wie findet man einen RSS-Feed<\/b><\/p>\n<p>Wie so oft, ist auch bei dieser Fragestellung Ihre pr&auml;ferierte Suchmaschine im Internet die erste Anlaufstelle. Google findet alleine mit den Suchbegriffen ms access rss ca. 145.000.000 Eintr&auml;ge. Wenn Sie nach der Suche auf den Link zu einer Webseite klicken, werden Sie in den meisten F&auml;llen zu einer &#8211; f&uuml;r Menschen lesbaren &#8211; Seite mit Zusatzinformationen geleitet. Auf dieser Seite sollten Sie dann nach einer der folgenden Kennzeichnungen Ausschau halten:<\/p>\n<h3>Kennzeichnungen f&uuml;r RSS-Feeds<\/h3>\n<p>Um dem Anwender einen m&ouml;glichst einfachen und schnellen Zugang zu einem RSS-Feed zu erm&ouml;glichen, haben sich die Logos auf Webseiten aus Tab. 1 durchgesetzt.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Logo<\/b><\/p>\n<\/td>\n<td>\n<p><b>Beschreibung<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\n<p>RSS-Feed-Logo<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\n<p>XML-Feed-Logo<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\n<p>Neues RSS-Logo<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Logos zur Kennzeichnung von RSS-Feeds<\/b><\/p>\n<p>Das neue RSS Logo wurde urspr&uuml;nglich von den Entwicklern des Webbrowsers Firefox entwickelt. Mittlerweile haben sowohl die Unternehmen Opera als auch Microsoft das Logo &uuml;bernommen und werden es auch in die neuesten Generationen der Webbrowser integrieren.<\/p>\n<p><b>Aufbau einer RSS-Datei<\/b><\/p>\n<p>Seit dem Start der ersten RSS-Feeds im Juni 2000 gibt es bis heute mehrere Versionen des RSS-Formats.<\/p>\n<p><IMG height=\"14\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic001.png\" width=\"36\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Beispiel einer RSS-Feed-Datei<\/span><\/b><\/p>\n<p>Jede neue Version wurde so &uuml;berarbeitet, dass sowohl neue Pflicht- als auch optionale Elemente Einzug in die Spezifikation erhielten. Die g&auml;ngigen Versionen, die Sie bei n&auml;herer Besch&auml;ftigung mit dem Thema RSS im Internet finden werden, sind die RSS-Versionen 0.9x, 1.0 und 2.0.<\/p>\n<p>Bild 1 zeigt einen Auszug aus einem Feed des Haufe Verlags. Dieser stellt exemplarisch die m&ouml;gliche Struktur eines RSS-Feeds Version 0.91 dar.<\/p>\n<p>Jede RSS-Datei ist eine g&uuml;ltige XML-Datei gem&auml;&szlig; der XML-Spezifikation 1.0. Die in der Datei enthaltenen Zeichen werden in der Regel mit dem Code UTF-8 codiert.<\/p>\n<p>Die RSS-Datei beginnt mit dem Root-Knoten &lt;rss&gt;. Dieser Knoten muss mit einem Attribut Version erg&auml;nzt werden, der die verwendete RSS-Spezifikation beschreibt.<\/p>\n<p>Als n&auml;chster Knoten folgt ein &lt;channel&gt;-Knoten, der die &#8222;Kopfdaten&#8220; des Feeds beinhaltet. In Abh&auml;ngigkeit der RSS-Spezifikation folgen nun einige Knoten mit Informationen wie etwa &lt;titel&gt;, &lt;link&gt; und einer kurzen Beschreibung des Feeds im Knoten &lt;description&gt;. Details zur RSS-Spezifikation k&ouml;nnen Sie unter anderem dem Link am Ende dieses Beitrags entnehmen.<\/p>\n<p>Der Image-Knoten verweist auf ein Icon oder Logo zum Feed und ist optional. Im Rahmen der Implementierung des Access-Feed-Readers werden Sie eine Methode kennen lernen, mit der Sie die optionalen Attribute sicher abfragen und verwenden k&ouml;nnen.<\/p>\n<p>Nun folgt eine immer wiederkehrende Liste von Knoten des Typs Item. Jedes Item innerhalb einer Feed-Datei ist identisch aufgebaut.<\/p>\n<h3>Hinweis<\/h3>\n<p>Bitte beachten Sie, dass es f&uuml;r die Items ebenfalls eine Vielzahl optionaler Attribute gibt, die von Feed zu Feed sehr unterschiedlich definiert sein k&ouml;nnen. <\/p>\n<p>Ein Item besteht im Wesentlichen aus den Knoten &lt;title&gt;, &lt;link&gt; und &lt;description&gt;. <\/p>\n<p>Einige Anbieter von RSS-Feeds beschr&auml;nken sich bei den Items auf die Angabe eines kurzen Titels und eines Links zur eigenen Homepage. Dieses Verfahren ist h&auml;ufig bei Presseagenturen oder TV-Sendern zu beobachten, die damit den Anwender zum Abruf des kompletten Nachrichtentextes auf die Webseite des Feed-Anbieters weiterleiten k&ouml;nnen. Wenn der Anwender den Link in seinem RSS-Feed-Reader anklickt, wird er im Normalfall direkt zum relevanten und vollst&auml;ndigen Text des Items weitergeleitet.<\/p>\n<p><b>Alternativen<\/b><\/p>\n<p>In der noch jungen Geschichte des RSS-Formats hat es hinter den Kulissen schon seit der ersten Version eine rege Diskussion um die notwendigen Attribute und Knoten zur Aufbereitung der Informationen gegeben.<\/p>\n<p>Einige Stimmen sprechen sich daf&uuml;r aus, RSS m&ouml;glichst schlank und einfach zu halten. Andere Parteien m&ouml;chten die sprichw&ouml;rtliche eierlegende Wollmilchsau erstellen und definieren ein universelles und riesiges Set von zul&auml;ssigen Attributen. <\/p>\n<p>Ein sehr umfangreiches Format ist das Format Atom, welches ma&szlig;geblich in der Version 1.0 eingesetzt wird. Atom ist ebenso wie RSS ein Internetstandard und versucht, die Vorteile der einzelnen RSS-Standards in einem neuen Format zu vereinen. Atom fordert beispielsweise eine inhaltliche Kennzeichnung von Eintr&auml;gen, die bei RSS oft schmerzlich vermisst wird.<\/p>\n<p>So kann etwa in RSS der reine Text einer Nachricht oder auch formatiertes HTML-Markup in einem Knoten gespeichert werden. Die verarbeitende Anwendung bekommt keinen Hinweis auf den Inhalt und muss sich selber um eine Interpretation der Daten k&uuml;mmern. Atom erm&ouml;glicht in diesem Fall eine Kennzeichnung als type = text oder type = html.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Obwohl im folgenden Quellcode zu diesem Beitrag nur das RSS-Format eingelesen wird, k&ouml;nnen Sie die L&ouml;sung jederzeit selber um das Atom-Format erweitern. <\/p>\n<p>Microsoft wird mit dem kommenden Internet Explorer 7 das erste Mal direkte Unterst&uuml;tzung von RSS in der Oberfl&auml;che einer Anwendung anbieten und auch ein API zur Verwendung von RSS in eigenen Applikationen mitliefern. Damit Sie nicht bis zur Freigabe des neuen IE7 warten m&uuml;ssen, zeigt Ihnen dieser Artikel einen relativ einfachen Weg, um Ihre Anwendung mit RSS-Feeds anzureichern.<\/p>\n<p>Die nachfolgend beschriebene Musterl&ouml;sung erm&ouml;glicht die Eingabe einer URL, von der ein RSS-Feed geladen werden soll. Access baut nach der Eingabe eine Verbindung &uuml;ber das http-Protokoll (Port 80) mit dem in der URL angegebenen Webserver auf und liest die RSS-Daten ein.<\/p>\n<p>Nachdem die Daten lokal auf dem Client vorliegen, werden relevante Angaben zum Channel extrahiert und der neue Channel in der Tabelle Channels angelegt.<\/p>\n<p>Im letzten Schritt werden in dieser Musterl&ouml;sung alle bereits definierten Channels durchlaufen und auf neue Beitr&auml;ge hin &uuml;berpr&uuml;ft. Diese Beitr&auml;ge werden in der Tabelle Items abgelegt.<\/p>\n<p>Das Datenmodell f&uuml;r die Anwendung besteht nur aus den beiden Tabellen Channels und Items.<\/p>\n<p><b>Tabelle Channels<\/b><\/p>\n<p>Legen Sie in Access eine neue Tabelle Channels mit Feldern aus Tab. 2 an.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Feldname<\/b><\/p>\n<\/td>\n<td>\n<p><b>Datentyp<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>ChannelID<\/p>\n<\/td>\n<td>\n<p>AutoWert, PK<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Version<\/p>\n<\/td>\n<td>\n<p>Text  [10]<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Title<\/p>\n<\/td>\n<td>\n<p>Text  [255]<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Link<\/p>\n<\/td>\n<td>\n<p>Hyperlink<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Description<\/p>\n<\/td>\n<td>\n<p>Memo<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Language<\/p>\n<\/td>\n<td>\n<p>Text  [10]<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 2: Struktur der Tabelle Channels<\/b><\/p>\n<p><b>Tabelle Items<\/b><\/p>\n<p>Die zweite relevante Tabelle benennen Sie mit dem Namen Items und definieren die Felder aus Tab. 3. Die beiden Tabellen werden &uuml;ber eine 1:n-Beziehung verbunden, sodass ein Channel n Items enthalten kann (siehe Bild 2).<\/p>\n<p>Die Oberfl&auml;che der Musterl&ouml;sung besteht aus einem Hauptformular, in das ein Unterformular eingebettet wird (siehe Bild 3).<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Feldname<\/b><\/p>\n<\/td>\n<td>\n<p><b>Datentyp<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>ItemID<\/p>\n<\/td>\n<td>\n<p>AutoWert, PK<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>ChannelID<\/p>\n<\/td>\n<td>\n<p>Zahl [LongInteger]<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Title<\/p>\n<\/td>\n<td>\n<p>Text [255]<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Description<\/p>\n<\/td>\n<td>\n<p>Memo<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Link<\/p>\n<\/td>\n<td>\n<p>Hyperlink<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>PubDate<\/p>\n<\/td>\n<td>\n<p>Text [50]<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 3: Struktur der Tabelle Items<\/b><\/p>\n<p><IMG height=\"14\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic002.png\" width=\"36\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><IMG height=\"100\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic003.png\" width=\"100\" border=\"0\"><\/p>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Beziehung zwischen Channels und Items<\/span><\/b><\/p>\n<p><IMG height=\"507\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic004.png\" width=\"445\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Access Feed-Reader in Aktion<\/span><\/b><\/p>\n<p><b>Anzeige der Items<\/b><\/p>\n<p>Die Items werden in einem Unterformular angezeigt. Um das Formular zu erstellen, gehen Sie wie folgt vor:<\/p>\n<li>Legen Sie ein neues Formular auf Basis der Tabelle Items an.<\/li>\n<li>Ziehen Sie die Felder Title, PubDate, Description und Link auf das Formular und ordnen Sie die Steuerelemente wie in Bild 4 an.<\/li>\n<li>&auml;ndern Sie einige Eigenschaften des Formulars wie in Tab. 4.<\/li>\n<li>Speichern Sie das Formular unter dem Namen SubItems und schlie&szlig;en Sie es. (<\/li>\n<p><IMG height=\"154\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic005.png\" width=\"284\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><IMG height=\"503\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Layout des Formulars SubItems<\/span><\/b><\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Eigenschaft<\/b><\/p>\n<\/td>\n<td>\n<p><b>Wert<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Standardansicht<\/p>\n<\/td>\n<td>\n<p>Endlosformular<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Breite<\/p>\n<\/td>\n<td>\n<p>11,5 cm<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>H&ouml;he<\/p>\n<\/td>\n<td>\n<p>2,6 cm<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Hintergrundfarbe<\/p>\n<\/td>\n<td>\n<p>Wei&szlig;<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 4: Eigenschaften des Unterformulars SubItems<\/b><\/p>\n<p><b>Das Hauptformular<\/b><\/p>\n<p>Das Hauptformular basiert auf der Tabelle Channels und nimmt neben einigen weiteren Steuerelementen auch das soeben erstellte Unterformular SubItems auf.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die folgende Beschreibung des Formularaufbaus beschr&auml;nkt sich auf die technisch relevanten Funktionen. Zus&auml;tzliche Steuerelemente, die das optische Erscheinungsbild der Anwendung verbessern, k&ouml;nnen Sie der beigef&uuml;gten L&ouml;sung auf der CD entnehmen. <\/p>\n<p><IMG height=\"228\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic007.png\" width=\"331\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Das Hauptformular im Entwurf<\/span><\/b><\/p>\n<li>Legen Sie ein neues Formular auf Basis der Tabelle Channels an.<\/li>\n<li>Positionieren Sie in der rechten, oberen Ecke eine Schaltfl&auml;che mit dem Namen cmdUpdate und der Beschriftung Aktualisieren.<\/li>\n<li>Erstellen Sie ein ungebundenes Textfeld mit dem Namen txtURL.<\/li>\n<li>Erstellen Sie neben dem Textfeld txtURL eine weitere Schaltfl&auml;che mit dem Namen cmdNewChannel und der Beschriftung Anlegen.<\/li>\n<li>Ziehen Sie aus der Feldliste die Felder Title, Description, Language, Version und Link auf das Formular und ordnen Sie sie gem&auml;&szlig; Bild 5 an.<\/li>\n<li>Stellen Sie sicher, dass in der Toolbox der Zauberstab f&uuml;r den Steuerelement-Assistenten aktiviert ist. <\/li>\n<li>Selektieren Sie nun in der Toolbox das Werkzeug Unterformular-\/Bericht und ziehen Sie einen Bereich unterhalb der bisher angeordneten Steuerelemente auf. Der Unterformular-Assistent sollte nun starten.<\/li>\n<li>W&auml;hlen Sie die Option Vorhandenes Formular verwenden und selektieren Sie das bereits erstellte Formular SubItems.<\/li>\n<li>Das Unterformular soll ebenfalls den Namen SubItems erhalten.<\/li>\n<li>Stellen Sie den Assistenten fertig und &ouml;ffnen die Eigenschaften des Unterformulars. Stellen Sie sicher, dass die beiden Eigenschaften Verkn&uuml;pfen von und Verkn&uuml;pfen nach mit dem Wert ChannelID gef&uuml;llt sind.<\/li>\n<li>Speichern Sie das Formular unter dem Namen FeedReader. (<\/li>\n<p>Die wesentlichen Funktionen der Anwendung werden in einem eigenen VBA-Modul abgelegt. Aus diesem Grund erstellen Sie nun ein neues Modul und speichern es unter dem Namen modRssReader ab.<\/p>\n<p><b>Access lernt XML<\/b><\/p>\n<p>Wie bereits erw&auml;hnt, sind RSS-Feeds nichts anderes als XML-Dateien, die &uuml;ber das Internet geladen werden. Um diese Dateien mit Access verarbeiten zu k&ouml;nnen, binden Sie nun zun&auml;chst einen Verweis auf die Microsoft-XML-Bibliothek ein. &ouml;ffnen Sie das soeben erstellte Modul und w&auml;hlen Sie im Access-Men&uuml; den Eintrag Extras\/Verweise aus. Suchen Sie nach einem Eintrag namens &#8222;Microsoft XML&#8220;. Falls Sie Office 2003 einsetzen, sollten Sie den Verweis auf die Version 5.0 auf Ihrem System vorfinden (siehe Bild 6).<\/p>\n<h3>Hinweis<\/h3>\n<p>Falls Sie mehrere Versionen der XML-Bibliothek auf Ihrem System vorfinden, w&auml;hlen Sie die h&ouml;chste Version aus. Sie ben&ouml;tigen allerdings mindestens die Version 2.6. Sollte wider Erwarten keine Version auf Ihrem System vorhanden sein, k&ouml;nnen Sie die XML-Bibliothek bei Microsoft im Downloadbereich finden. <\/p>\n<p><IMG height=\"487\" src=\"..\/fileadmin\/_temp_\/{366BA2DA-B488-4A85-ACF8-688E78C37EEB}\/pic008.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Verweis auf Microsoft XML<\/span><\/b><\/p>\n<p><b>Anlegen eines neuen Channels<\/b><\/p>\n<p>Als erste Funktion implementieren Sie den Abruf eines Channels aus dem Internet (s. Quellcode 1).<\/p>\n<p>&ouml;ffnen Sie das Modul modRssReader und legen Sie die Funktion AddChannel  an. Diese Funktion erh&auml;lt die abzurufende URL als Parameter und liefert das Ergebnis des Abrufs als boolschen Wert zur&uuml;ck.<\/p>\n<p>Die Variable success dient als Indikator, um festzustellen, ob die Routine fehlerfrei durchgelaufen ist.<\/p>\n<h3>Zugriff auf das Internet<\/h3>\n<p>Mit dem Objekt XMLHTTP der Klasse MSXML2 erfolgt der Zugriff auf das Internet aus Access heraus. Die Open-Funktion der XMLHTTP-Klasse bekommt mit der Methode Get mitgeteilt, dass Daten geladen werden sollen [1].<\/p>\n<p>Die URL &#8211; also die Quelle der Daten &#8211; wird der Funktion beim Aufruf als Parameter mitgegeben. Der Parameter False am Ende des Aufrufs bestimmt dar&uuml;ber, ob Access auf die Daten warten soll (synchroner Abruf) oder ob eine andere Funktion die Daten entgegennimmt (asynchroner Abruf). Mit doc.Load XMLHTTP.responseXML wird das XML-Dokument doc mit der Ausgabe des Datenabrufs versorgt. In diesem Schritt werden also die Daten aus dem RSS-Feed in ein lokales XML-Dokument geladen [2].<\/p>\n<h3>Verarbeiten der Channel-Daten<\/h3>\n<p>Die Bedingung [3] pr&uuml;ft, ob die Daten &uuml;berhaupt korrekt geladen werden konnten und gibt gegebenenfalls eine Fehlermeldung aus. Diese Pr&uuml;fung ist zwingend notwendig, da sonst im weiteren Verlauf keine Daten extrahiert werden k&ouml;nnen. Wenn das Dokument beim Laden keinen Fehler verursacht hat, k&ouml;nnen nun die ersten Daten ber&uuml;cksichtig werden.<\/p>\n<h3>Hinweis<\/h3>\n<p>Es ist zum besseren Verst&auml;ndnis des Quellcodes sehr hilfreich, wenn Sie sich die XML-Struktur des RSS-Feeds parallel zur Erl&auml;uterung des Codes ansehen. Sie k&ouml;nnen daf&uuml;r die exemplarische Struktur aus Abbildung 1 verwenden. <\/p>\n<p>Die Routine pr&uuml;ft zun&auml;chst, ob das XML-Dokument in der Basis &uuml;berhaupt Attribute besitzt.<\/p>\n<p>Falls das der Fall ist, wird das Attribut mit dem Namen version ausgelesen und in der Variablen Version zwischengespeichert. Ein Zugriff auf das Attribut ohne vorherige Pr&uuml;fung k&ouml;nnte zu einem Fehler f&uuml;hren und den kompletten Vorgang abbrechen [4].<\/p>\n<p>Als N&auml;chstes selektiert die Routine das channel-Element und weist es dem XML-Knoten channelNode zu [5]. Falls das geklappt hat, wird ein tempor&auml;rer XML-Knoten verwendet, um die einzelnen Daten des Channels jeweils mit einer Sicherheitspr&uuml;fung abzufragen. Sobald der Titel des Channels bekannt ist, kann die Tabelle Channels auf die Existenz dieses Channels gepr&uuml;ft werden. <\/p>\n<p>Eine Besonderheit ist die Speicherung des Links in der Datenbank [6]. Es wird in der Tabelle ein Feld vom Typ Hyperlink verwendet.<\/p>\n<p><b>Quellcode 1: Anlegen eines Channels<\/b><\/p>\n<pre>Public Function AddChannel(url As String) As Boolean\r\n    On Error GoTo errHandler\r\n    Dim success As Boolean\r\n    Dim XMLHTTP As New MSXML2.XMLHTTP\r\n    Dim doc As New MSXML2.DOMDocument\r\n    Dim workingNode As MSXML2.IXMLDOMNode\r\n    Dim nodeList As MSXML2.IXMLDOMNodeList\r\n    Dim channelNode As MSXML2.IXMLDOMNode\r\n    Dim node As MSXML2.IXMLDOMNode\r\n    Dim channelTitle As String\r\n    Dim Version As String\r\n    Dim db As DAO.Database\r\n    Dim rs As DAO.Recordset\r\n    success = True\r\n    XMLHTTP.Open \"GET\", url, False                                                         ''[1]\r\n    XMLHTTP.send\r\n    doc.Load XMLHTTP.responseXML                                                           ''[2]\r\n    Set XMLHTTP = Nothing\r\n    If doc.parseError &lt;&gt; 0 Then                                                            ''[3]\r\n        MsgBox doc.parseError.reason, vbCritical, \"Fehler beim Laden der Feed-Daten\"\r\n        success = False\r\n    Else\r\n        If doc.documentElement.Attributes.length &gt; 0 Then                                  ''[4]\r\n            Version = doc.documentElement.Attributes.getNamedItem(\"version\").Text\r\n        Else\r\n            Version = \"\"   '' RSS-Version kann nicht ermittelt werden\r\n        End If\r\n        Set db = CurrentDb()\r\n        Set channelNode = doc.documentElement.selectSingleNode(\"channel\")                  ''[5]\r\n        If Not channelNode Is Nothing Then\r\n            Set workingNode = channelNode.selectSingleNode(\"title\")\r\n            If Not workingNode Is Nothing Then\r\n                channelTitle = channelNode.selectSingleNode(\"title\").Text\r\n            End If\r\n            Set rs = db.OpenRecordset _                                                    ''[6]\r\n                (\"SELECT * FROM Channels WHERE Title = ''\" + channelTitle + \"''\")\r\n            If rs.RecordCount = 0 Then\r\n                rs.AddNew\r\n                rs.Fields(\"Title\") = channelTitle\r\n                rs.Fields(\"Version\") = Version\r\n                rs.Fields(\"Link\") = url & \"#\" & url & \"#\"                                  ''[7]\r\n                Set workingNode = channelNode.selectSingleNode(\"description\")              ''[8]\r\n                If Not workingNode Is Nothing Then                                         \r\n                    rs.Fields(\"Description\") = channelNode.selectSingleNode(\"description\").Text\r\n                End If\r\n                Set workingNode = channelNode.selectSingleNode(\"language\")                 ''[9]\r\n                If Not workingNode Is Nothing Then\r\n                    rs.Fields(\"Language\") = channelNode.selectSingleNode(\"language\").Text\r\n                End If\r\n                rs.Update\r\n            End If\r\n        End If\r\n        ''...Ressourcen freigeben\r\n        MsgBox \"Der Channel ''\" & channelTitle & \"'' wurde aufgenommen\", _\r\n            vbInformation, \"Erfolgreich!\"\r\n    End If  \r\n    ''...Fehlerbehandlung\r\nEnd Function<\/pre>\n<p>Damit der Anwender sp&auml;ter in der Oberfl&auml;che einen hier gespeicherten Link auch im Webbrowser &ouml;ffnen kann, muss der Link in den Eigenschaften Anzeigename und Link gespeichert werden.<\/p>\n<p>Die beiden Felder haben in diesem Beispiel den identischen Inhalt. Der Wert f&uuml;r den Link wird im Format Anzeigename#Link# abgespeichert [7].<\/p>\n<p>Die Ermittlung der weiteren Werte erfolgt nun immer nach dem gleichen Verfahren [8]. Zun&auml;chst wird versucht, den tempor&auml;ren XML-Knoten workingNode mit der Abfrage der gew&uuml;nschten Information zu f&uuml;llen.<\/p>\n<p>In diesem Beispiel wird versucht, die description auszulesen. Falls der XML-Knoten gef&uuml;llt werden konnte, wird der Wert des Knotens aus der Texteigenschaft ausgelesen und in der Tabelle im korrespondierenden Feld gespeichert.<\/p>\n<p>Das Verfahren wird noch einmal f&uuml;r die Sprache des Channels wiederholt [9].<\/p>\n<p>Zum Abschluss speichert die Routine das Recordset und gibt die verwendeten Ressourcen wieder frei.<\/p>\n<p><b>Quellcode 2: Abruf der Items eines Channels<\/b><\/p>\n<pre>Public Function GetAllItems() As Boolean\r\n    On Error GoTo errHandler\r\n    Dim db As DAO.Database\r\n    Dim rsChannels As DAO.Recordset\r\n    Dim counter As Integer\r\n    Dim errMessage As String\r\n    Dim success As Boolean\r\n    success = True\r\n    Set db = CurrentDb\r\n    Set rsChannels = db.OpenRecordset(\"SELECT ChannelID, Version, Title, Link FROM Channels\")\r\n    Do Until rsChannels.EOF\r\n        counter = counter + 1\r\n        Forms!FeedReader.Caption = \"Aktualisieren von News-Feed ''\" _            + rsChannels.Fields(\"Title\") + \"''\"\r\n        If Not GetSingleItem(rsChannels.Fields(\"ChannelID\"), _                              ''[10]            HyperlinkPart(rsChannels.Fields(\"Link\"), acDisplayText)) Then\r\n            errMessage = errMessage + \"Fehler beim Aktualisieren von News-Feed ''\" _                + rsChannels.Fields(\"Title\") + \"''\" & vbCrLf\r\n            success = False\r\n        End If\r\n        rsChannels.MoveNext\r\n    Loop\r\n    Forms!FeedReader.Caption = \"Access Feed-Reader\"\r\n    If success = False Then\r\n        MsgBox errMessage, vbCritical, \"Es sind Fehler aufgetreten...\"\r\n    End If\r\n    ''...Fehlerbehandlung\r\nEnd Function<\/pre>\n<p><b>Abrufen von Items<\/b><\/p>\n<p>Der Abruf der Items erfolgt in einer Schleife je Channel und wird in Quellcode 1 dargestellt.<\/p>\n<p>Innerhalb der Schleife wird die Funktion GetSingleItem aufgerufen, die als Parameter die aktuelle ChannelID und die URL f&uuml;r den Datenabruf ben&ouml;tigt [10].<\/p>\n<h3>Abruf der Items pro Channel<\/h3>\n<p>Die Funktion GetSingleItem arbeitet nach einem vergleichbaren Verfahren wie die in Quellcode 2 beschriebene Funktion zum Anlegen eines Channels.<\/p>\n<p>Sie finden den gut dokumentierten Quellcode dieser Routine im Modul modRssReader der Beispieldatenbank.<\/p>\n<p><b>Formatierung der Item-Werte<\/b><\/p>\n<p>Bei der Anlage eines neuen Items in Quellcode 3 wird bei den Feldern Title und Description die Funktion FormatData aufgerufen. Diese Funktion ersetzt in den Feldern enthaltene Sonderzeichen und HTML-Codierungen, die laut RSS-Spezifikation innerhalb des Contents zul&auml;ssig sind.<\/p>\n<p>Ohne weitere Konvertierung kann es passieren, dass HTML-formatierte Inhalte in der Datenbank gespeichert werden. Die Speicherung ist zwar kein technisches Problem, aber die Anzeige der Daten in der Formularoberfl&auml;che erfolgt in diesem Fall in reinem HTML-Quellcode.<\/p>\n<p><b>Quellcode 3: Die Funktion FormatDate konvertiert HTML-Codes in lesbare Zeichen<\/b><\/p>\n<pre>Function FormatData(strIn As String) As String\r\n    strIn = Replace(strIn, \"''\", \"&acute;\")\r\n    strIn = Replace(strIn, \" \", \" \")\r\n    strIn = Replace(strIn, \"&Auml;\", \"&auml;\")\r\n    strIn = Replace(strIn, \"&Ouml;\", \"&ouml;\")\r\n    strIn = Replace(strIn, \"&Uuml;\", \"&uuml;\")\r\n    strIn = Replace(strIn, \"&auml;\", \"&auml;\")\r\n    strIn = Replace(strIn, \"&ouml;\", \"&ouml;\")\r\n    strIn = Replace(strIn, \"&uuml;\", \"&uuml;\")\r\n    strIn = Replace(strIn, \"&szlig;\", \"&szlig;\")\r\n    FormatData = strIn\r\nEnd Function\r\n<\/pre>\n<p><b>Quellcode 4: Aktualisieren aller Items<\/b><\/p>\n<pre>Private Sub cmdUpdate_Click()\r\n    If GetAllItems() Then\r\n        Me.Requery\r\n        MsgBox \"Die Daten wurden aktualisiert\", vbInformation, \"Erfolgreich\"\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5: Anlegen eines neuen Channels<\/b><\/p>\n<pre>Private Sub cmdNewChannel_Click()\r\n    If Len(\"\" & Me.txtURL) = 0 Then\r\n        MsgBox \"Unvollst&auml;ndige Angaben\", vbCritical, \"Bitte geben Sie eine URL ein!\"\r\n    Else\r\n        If AddChannel(Me.txtURL) Then\r\n            If GetAllItems() Then\r\n                Me.Requery\r\n                DoCmd.GoToRecord , , acLast\r\n                Me.txtURL = \"\"\r\n            End If\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p>Die f&uuml;r die Webausgabe formatierten Inhalte sind ohne Weiteres nicht f&uuml;r die Access-Oberfl&auml;che geeignet.<\/p>\n<p>Die Funktion ist nur rudiment&auml;r aufgebaut und kann problemlos um beliebige weitere Ersetzungen erg&auml;nzt werden.<\/p>\n<p><b>Aktivierung der Schaltfl&auml;chen im Hauptformular<\/b><\/p>\n<p>Nachdem nun der komplette Quellcode zur Verarbeitung der Feeds erstellt wurde, werden noch die beiden Schaltfl&auml;chen in der Oberfl&auml;che des Formulars FeedReader mit Quellcode versehen.<\/p>\n<h3>Schaltfl&auml;che &#8222;Aktualisieren&#8220;<\/h3>\n<p>&ouml;ffnen Sie das Formular FeedReader in der Entwurfsansicht und legen Sie dann eine neue Ereignisprozedur f&uuml;r das Click-Ereignis der Schaltfl&auml;che cmdUpdate an (s. Quellcode 4).<\/p>\n<p>In der Ereignisprozedur wird die bereits angelegte Funktion GetAllItems aufgerufen. Nach einer erfolgreichen Aktualisierung wird die Datenquelle des Formulars FeedReader aktualisiert und eine Meldung ausgegeben.<\/p>\n<h3>Anlegen-Schaltfl&auml;che<\/h3>\n<p>Die Schaltfl&auml;che Anlegen ruft zun&auml;chst die Funktion AddChannel auf (s. Quellcode 5). Dabei wird die URL &uuml;bergeben, die der Anwender in der Oberfl&auml;che erfasst hat. Nachdem der neue Channel erfolgreich angelegt wurde, werden mit dem Aufruf von GetAllItems alle neuen Items (also auch die f&uuml;r den neuen Channel) eingelesen. Nach der Aktualisierung der Datenquelle des Formulars wird der Datensatzzeiger auf den letzten, neuen Datensatz positioniert. Sie k&ouml;nnen somit direkt mit der Ansicht der neuen Items beginnen.<\/p>\n<p>Das hier vorgestellte System ist im Vergleich zu den spezialisierten RSS-Readern durchaus als rudiment&auml;r zu bezeichnen. Die folgende Liste soll Sie inspirieren, das vorhandene Basismodul noch zu erweitern.<\/p>\n<h3>Images<\/h3>\n<p>Der im RSS-Feed eingebettete Bereich Image des Channels bietet die M&ouml;glichkeit, ein Logo des abonnierten Channels herunterzuladen und in die Datenbank einzubinden. Den Download des Images k&ouml;nnen Sie ebenfalls mit dem XMLHTTP-Objekt vornehmen.<\/p>\n<h3>Validierungen<\/h3>\n<p>Die durchgef&uuml;hrten Validierungen der Musterl&ouml;sung reichen zwar f&uuml;r den Anfang aus, aber Sie sollten nicht vergessen, dass Sie fremde Daten aus dem Internet herunterladen und in Ihrer Datenbank speichern. Eine Erweiterung der Validierungen k&ouml;nnte beispielsweise verhindern, dass Daten im HTML-Format in der Datenbank gespeichert werden.<\/p>\n<h3>Auslesen und Speichern von (optionalen) Attributen<\/h3>\n<p>Da RSS ein offenes Format ist, existiert eine Vielzahl Feeds mit Attributen, die &uuml;ber die hier besprochenen Kernattribute hinausgehen. W&auml;re es nicht gut, wenn diese Attribute auch behandelt werden k&ouml;nnten<\/p>\n<h3>Suchfunktion (Channel und Item)<\/h3>\n<p>Je mehr Daten Sie speichern, desto eher ben&ouml;tigen Sie eine Suchfunktion. Hier kann Access als Datenbanksystem nat&uuml;rlich sehr guten Support geben.<\/p>\n<h3>Druckfunktion<\/h3>\n<p>Erstellen Sie einen Bericht, der die aktuellen Nachrichten &uuml;bersichtlich f&uuml;r den Druck aufbereitet. So k&ouml;nnen Sie Ihre neuesten Nachrichten auch offline ohne PC lesen.<\/p>\n<h3>Automatisierung der neuen Abrufe<\/h3>\n<p>Sie k&ouml;nnen die Abrufe von neuen Daten mit einem Timer automatisieren und somit ohne direkte Interaktion des Anwenders regelm&auml;&szlig;ig neue Daten einlesen.<\/p>\n<h3>Alternative Formate<\/h3>\n<p>Neben dem RSS-Format werden immer mehr Feeds auch mit dem Format Atom ver&ouml;ffentlicht. Erstellen Sie doch einfach ein Modul, welches die relevanten Pr&uuml;fungen f&uuml;r das Atom-Format beherrscht. Sie k&ouml;nnen damit die &#8222;Reichweite&#8220; Ihres Newsreaders wesentlich erh&ouml;hen, da Ihnen nun neue Feeds zur Verf&uuml;gung stehen.<\/p>\n<p>Dieser Artikel hat Ihnen gezeigt, wie Sie auch mit Hilfe von Access in die Welt der RSS-Feeds eintauchen k&ouml;nnen. Aufgrund der flexiblen Struktur der Feed-Daten und der schier unendlichen Anzahl Feeds im Internet haben Sie die M&ouml;glichkeit, einen echten Mehrwert in vorhandene Anwendungen zu implementieren.<\/p>\n<h3>Weiterf&uuml;hrende Links<\/h3>\n<li>RSS 2.0 Spezifikation: http:\/\/blogs.law.harvard.edu\/tech\/rss<\/li>\n<li>Atom-Spezifikation: http:\/\/www.validome.org\/blog\/news\/Item-3<\/li>\n<li>Haufe RSS-Feed: http:\/\/www.haufe.de\/rssNews<\/li>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>RSSNewsReader.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/01A98F47-AE6F-49E3-883F-259CB59943BD\/aiu_362.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>RSS ist in kurzer Zeit zum Synonym f&uuml;r aktuelle Meldungen aus dem Internet geworden. Falls Sie mehr &uuml;ber die zugrunde liegende Technik erfahren m&ouml;chten oder beliebige, &ouml;ffentliche RSS-Feeds in Ihre eigene Access-Anwendung integrieren wollen, bietet Ihnen dieser Artikel die notwendigen Hin-tergr&uuml;nde und L&ouml;sungsans&auml;tze. Zus&auml;tzlich k&ouml;nnen Sie die hier beschriebene L&ouml;sung direkt einsetzen und Informationen aus den gew&uuml;nschten Nachrichtenkan&auml;len in eine Access-Datenbank einlesen.<\/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":[662006,66032006,44000034,44000030,44000027],"tags":[],"class_list":["post-55000362","post","type-post","status-publish","format-standard","hentry","category-662006","category-66032006","category-ImportExport","category-Internet","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>RSS-Feed mit Access - 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\/RSSFeed_mit_Access\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RSS-Feed mit Access\" \/>\n<meta property=\"og:description\" content=\"RSS ist in kurzer Zeit zum Synonym f&uuml;r aktuelle Meldungen aus dem Internet geworden. Falls Sie mehr &uuml;ber die zugrunde liegende Technik erfahren m&ouml;chten oder beliebige, &ouml;ffentliche RSS-Feeds in Ihre eigene Access-Anwendung integrieren wollen, bietet Ihnen dieser Artikel die notwendigen Hin-tergr&uuml;nde und L&ouml;sungsans&auml;tze. Zus&auml;tzlich k&ouml;nnen Sie die hier beschriebene L&ouml;sung direkt einsetzen und Informationen aus den gew&uuml;nschten Nachrichtenkan&auml;len in eine Access-Datenbank einlesen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T20:54:38+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360\" \/>\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=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"RSS-Feed mit Access\",\"datePublished\":\"2021-02-11T20:54:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/\"},\"wordCount\":3275,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ab5b176a57e84a5fafa69eb57b2a8360\",\"articleSection\":[\"2006\",\"3\\\/2006\",\"Import\\\/Export\",\"Internet\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/\",\"name\":\"RSS-Feed mit Access - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ab5b176a57e84a5fafa69eb57b2a8360\",\"datePublished\":\"2021-02-11T20:54:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ab5b176a57e84a5fafa69eb57b2a8360\",\"contentUrl\":\"http:\\\/\\\/vg02.met.vgwort.de\\\/na\\\/ab5b176a57e84a5fafa69eb57b2a8360\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RSSFeed_mit_Access\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RSS-Feed mit Access\"}]},{\"@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":"RSS-Feed mit Access - 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\/RSSFeed_mit_Access\/","og_locale":"de_DE","og_type":"article","og_title":"RSS-Feed mit Access","og_description":"RSS ist in kurzer Zeit zum Synonym f&uuml;r aktuelle Meldungen aus dem Internet geworden. Falls Sie mehr &uuml;ber die zugrunde liegende Technik erfahren m&ouml;chten oder beliebige, &ouml;ffentliche RSS-Feeds in Ihre eigene Access-Anwendung integrieren wollen, bietet Ihnen dieser Artikel die notwendigen Hin-tergr&uuml;nde und L&ouml;sungsans&auml;tze. Zus&auml;tzlich k&ouml;nnen Sie die hier beschriebene L&ouml;sung direkt einsetzen und Informationen aus den gew&uuml;nschten Nachrichtenkan&auml;len in eine Access-Datenbank einlesen.","og_url":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T20:54:38+00:00","og_image":[{"url":"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"RSS-Feed mit Access","datePublished":"2021-02-11T20:54:38+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/"},"wordCount":3275,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360","articleSection":["2006","3\/2006","Import\/Export","Internet","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/","url":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/","name":"RSS-Feed mit Access - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360","datePublished":"2021-02-11T20:54:38+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#primaryimage","url":"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360","contentUrl":"http:\/\/vg02.met.vgwort.de\/na\/ab5b176a57e84a5fafa69eb57b2a8360"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/RSSFeed_mit_Access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"RSS-Feed mit Access"}]},{"@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\/55000362","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=55000362"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000362\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000362"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000362"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}