{"id":55000093,"date":"2003-02-01T00:00:00","date_gmt":"2020-05-06T15:17:22","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=93"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Daten_visualisieren_mit_HTML","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/","title":{"rendered":"Daten visualisieren mit HTML"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Die Visualisierung von Daten unter Access ist zwar m&ouml;glich, aber nur f&uuml;r bestimmte Arten von Daten und in recht eingeschr&auml;nkter Form. Microsoft Graph sowie die Pivot-Ansichten von Daten bieten zwar die M&ouml;glichkeit, z. B. den Verlauf von bestimmten Zahlen &uuml;ber ausgew&auml;hlte Zeitr&auml;ume anzuzeigen, aber das Ausgabeformat ist weitgehend vorgegeben und erlaubt keine Interaktivit&auml;t. Wenn Sie aber beispielsweise die Urlaubs- und Abwesenheitsdaten von Mitarbeitern grafisch aufbereiten m&ouml;chten, haben Sie mit den Bordmitteln von Access keine Chance. Hier helfen nur viel Fantasie und der Einsatz ungew&ouml;hnlicher Werkzeuge.<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Die Anwendung des im vorliegenden Beitrag beschriebenen Beispiels erfordert eine vorhandene Installation des Microsoft Internet Explorer ab Version 5.0 oder h&ouml;her. <\/p>\n<p>Die Darstellung von Daten unter Access erfolgt in der Regel in geeigneten Formularen und Berichten, die entsprechende Steuerelemente f&uuml;r deren strukturierte Anzeige anbieten. Gelegentlich verlangt der Benutzer eine grafische Darstellung von Daten, beispielsweise des Verlaufes von Verkaufszahlen &uuml;ber einen bestimmten Zeitraum. In diesem Fall hilft Microsoft Graph sicher &uuml;ber die Runden.<\/p>\n<p>Was aber, wenn Sie Ihre Daten nicht in das von Microsoft Graph geforderte Format bringen k&ouml;nnen, Sie aber dennoch eine grafische Anzeige der Daten ben&ouml;tigen Oder wenn der Kunde auch noch w&uuml;nscht, dass die Daten nicht nur grafisch veranschaulicht werden sollen, sondern der Benutzer auch noch interaktiv mit den grafisch aufbereiteten Daten arbeiten kann<\/p>\n<p>Sie ahnen es bereits: Dann haben Sie ein m&auml;chtiges Problem. Aber auch nur, wenn Sie nicht &uuml;ber den Tellerrand schauen und auch mal ungew&ouml;hnliche Mittel einsetzen m&ouml;chten.<\/p>\n<p>Eine passende Aufgabenstellung, die erstens eine individuelle grafische Darstellung von Daten und zweitens die M&ouml;glichkeit des interaktiven Eingriffs des Benutzers in die grafischen Darstellung erfordern k&ouml;nnte, finden Sie schnell: zum Beispiel die Urlaubsverwaltung aus der Ausgabe 6\/2002 von Access im Unternehmen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Der vorliegende Beitrag baut auf der Musterl&ouml;sung Urlaubsverwaltung mit Access aus der Ausgabe 6\/2002 von Access im Unternehmen auf. Da Sie das Datenmodell dieser Musterl&ouml;sung weitgehend &uuml;bernehmen k&ouml;nnen, finden Sie in diesem Beitrag nur Hinweise auf eventuell vorzunehmende &auml;nderungen. Wenn Sie die Beispiele selbst nachvollziehen, k&ouml;nnen Sie die genannte Datenbank als Grundlage daf&uuml;r verwenden. Der Beitrag enth&auml;lt allerdings keine komplette Beschreibung der durchzuf&uuml;hrenden Schritte. <\/p>\n<h3>Visualisierung von Fehlzeiten<\/h3>\n<p>Die Urlaubsverwaltung erlaubt die Verwaltung von Fehlzeiten der Mitarbeiter wie Urlaub, Krankheit usw. Richtig wertvoll wird diese Anwendung, wenn sie z. B. auch noch einen grafischen &uuml;berblick &uuml;ber die Fehlzeiten der einzelnen Mitarbeiter im Jahres&uuml;berblick erlaubt.<\/p>\n<p><IMG height=\"451\" src=\"..\/fileadmin\/_temp_\/{DF641712-43F6-4BA8-A82F-EA0317411BDF}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Ein Jahreskalender im Access-Formular<\/span><\/b><\/p>\n<p>Zus&auml;tzlich soll die grafische Ansicht die M&ouml;glichkeit bieten, direkt die Detailinformationen zu den einzelnen Abwesenheiten anzuzeigen und zu bearbeiten &#8211; z. B. nach einem Mausklick auf einen der Tage, die innerhalb des gew&uuml;nschten Zeitraums liegen.<\/p>\n<p>Nat&uuml;rlich erm&ouml;glicht Access mit Formularen und entsprechenden Steuerelementen die Entwicklung solcher Ansichten. Der Aufwand ist allerdings &#8211; je nach Anforderung &#8211; sehr hoch.<\/p>\n<p>Die pure Anzeige der Jahres- oder Monats&uuml;bersicht eines Kalenders erfordert bereits die Anlage einer gro&szlig;en Menge von Steuerelementen (zumindest eines je Tag) inklusive Ereignisprozeduren, Zuweisung von Eigenschaften wie Text, Hintergrundfarbe usw.<\/p>\n<p>Wirklich kompliziert wird die Angelegenheit, wenn solche Daten auch noch f&uuml;r mehrere Mitarbeiter gleichzeitig angezeigt werden sollen.<\/p>\n<p>Access bietet n&auml;mlich nicht in allen Versionen die M&ouml;glichkeit, die Steuerelemente von verschiedenen Datens&auml;tzen mit unterschiedlichen Formaten zu versehen.<\/p>\n<h2>Grafische Darstellung mit HTML<\/h2>\n<p>Ohne Probleme geht dies nur, wenn Sie die Elemente der grafischen Darstellung und deren Eigenschaften komplett dynamisch erstellen und zur Laufzeit &auml;ndern k&ouml;nnen.<\/p>\n<p>Und hier kommt HTML ins Spiel: Diese eigentlich f&uuml;r Internetanwendungen verwendete Beschreibungssprache k&ouml;nnen Sie problemlos zur grafischen Darstellung von k&auml;stchen- und balkenf&ouml;rmigen Elementen verwenden.<\/p>\n<p>Einzige Voraussetzung sind grundlegende HTML-Kenntnisse, mit denen Sie einfache HTML-Seiten erstellen und diese mit Texten und Tabellen f&uuml;llen k&ouml;nnen. So kommt der eigentliche K&ouml;rper der in diesem Beitrag vorgestellten Darstellung eines Jahreskalenders (siehe Bild 1) mit genau vier HTML-Elementen aus: <\/p>\n<p>Dabei handelt es sich um den Tabellenk&ouml;rper &lt;table&gt; bzw. &lt;\/table&gt;, die Elemente f&uuml;r die Tabellenzeilen und -spalten &lt;tr&gt; bzw. &lt;\/tr&gt; und &lt;td&gt; bzw. &lt;\/td&gt; und das Hyperlink-Element &lt;a&gt; bzw. &lt;\/a&gt;, wobei die beiden jeweils genannten Elemente den eigentlichen Inhalt einschlie&szlig;en.<\/p>\n<p>Sie m&uuml;ssen die genannten Elemente nur noch in der gew&uuml;nschten Reihenfolge zusammenstellen und die L&uuml;cken zwischen schlie&szlig;enden und &ouml;ffnenden Elementen mit Inhalt f&uuml;llen, in den HTML-K&ouml;rper (engl.: body) einschlie&szlig;en und per Browser anzeigen. HTML ist auch nicht umsonst die am weitesten verbreitete Sprache zur Beschreibung von Inhalten im Internet &#8211; vor allem wegen seiner relativ einfachen Struktur.<\/p>\n<h2>Das Webbrowser-Steuerelement<\/h2>\n<p>&#8222;Was, per Browser anzeigen&#8220;, wird der aufmerksame Leser nun sagen &#8211; womit er eine berechtigte Frage stellt. &#8222;Access-Daten in HTML schreiben und dann auch noch einen Internet-Browser zu deren Anzeige verwenden Da kann ich ja direkt eine Internetanwendung erstellen!&#8220;<\/p>\n<p>Microsoft bietet gl&uuml;cklicherweise viele M&ouml;glichkeiten zur Interaktion zwischen seinen Anwendungen und im vorliegenden Fall klappt das besonders gut: Wenn Sie &uuml;ber einen Internet Explorer ab Version 5.0 verf&uuml;gen, befindet sich auf der Festplatte Ihres Rechners auch ein Steuerelement, mit dem Sie ein Browserfenster in Access-Formulare integrieren k&ouml;nnen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Das Webbrowser-Steuerelement kennen Sie m&ouml;glicherweise bereits aus einer fr&uuml;heren Ausgabe von Access im Unternehmen. Der Beitrag Internetbrowser mit Bookmarkverwaltung behandelt die Erstellung eines eigenen Internetbrowsers mit Access und ist in Ausgabe 4\/2001 zu finden. Da dort bereits einige Informationen &#8211; insbesondere &uuml;ber die Integration des Steuerelements &#8211; zu finden sind, wird an einigen Stellen auf diesen Beitrag verwiesen. <\/p>\n<h2>DHTML &#8211; dynamisches HTML<\/h2>\n<p>Die Theorie sieht nun folgenderma&szlig;en aus: Sie erstellen eine HTML-Seite mit den gew&uuml;nschten Daten und zeigen diese im Webbrowser-Steuerelement an. Der zweite Schritt ist kein Problem: <\/p>\n<p>Das Objektmodell des Webbrowser-Steuerelements verf&uuml;gt &uuml;ber eine Methode, um die gew&uuml;nschte Internetseite anzuzeigen.<\/p>\n<p>Sie wissen allerdings noch nicht, wie Sie die Internetseite mit den gew&uuml;nschten Informationen ausstatten.<\/p>\n<h3>Komplette Seite speichern<\/h3>\n<p>Die erste M&ouml;glichkeit ist, die Seite ganz neu zu erstellen, komplett zu speichern und anschlie&szlig;end im Webbrowser-Steuerelement aufzurufen. Diese Variante erfordert allerdings eine zus&auml;tzliche Speicheroperation und soll daher der folgenden Alternative weichen.<\/p>\n<h3>Seite dynamisch zusammenstellen<\/h3>\n<p>Mit einem kleinen Trick k&ouml;nnen Sie dem Webbrowser-Steuerelement eine HTML-Datei zuweisen, die komplett in einer String-Variablen gespeichert ist.<\/p>\n<p>Dazu initialisieren Sie das Webbrowser-Steuerelement zun&auml;chst mit einer leeren Seite. Anschlie&szlig;end schreiben Sie dynamisch die gew&uuml;nschten HTML-Anweisungen in die angezeigte Seite.<\/p>\n<p>Diese HTML-Anweisungen sollen zun&auml;chst nur das Ger&uuml;st enthalten &#8211; also die Tabellenstruktur mit den Kalenderelementen wie Monate, Wochen, Tage usw. <\/p>\n<p>Zwei weitere Prozeduren dienen dem F&uuml;llen des Kalenders mit den anzuzeigenden Zeitr&auml;umen &#8211; im vorliegenden Fall also mit den Fehlzeiten &#8211; durch eine F&auml;rbung der Tabellenzellen, die dem gew&uuml;nschten Zeitraum entsprechen sowie dem Leeren des Kalenders, also dem Entfernen aller farbigen Markierungen.<\/p>\n<p>Beim Initialisieren der Fehlzeiten&uuml;bersicht kommt nur die erste Prozedur zum Einsatz. Bei allen nachfolgenden Aktualisierungen &#8211; also z. B. dem L&ouml;schen einer Fehlzeit oder dem Wechsel des anzuzeigenden Mitarbeiters &#8211; kommen beide Prozeduren zum Einsatz. Die erste, um die aktuellen Markierungen zu entfernen, und die zweite, um die aktuellen Zeitr&auml;ume anzuzeigen.<\/p>\n<p>Die Aufteilung der Funktionalit&auml;t auf drei Prozeduren dient der Performance. Da der Aufbau der Tabellenstruktur auch auf schnellen Rechnern einige Sekunden dauert, wird er nur beim &ouml;ffnen des Formulars durchgef&uuml;hrt.<\/p>\n<p>Das Entfernen und erneute Hinzuf&uuml;gen der farbigen Markierungen erfolgt wesentlich schneller als die Zusammenstellung der kompletten Tabellenstruktur.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Wenn Sie die vorgestellte Technik in eine Anwendung integrieren, in der die Ansicht &ouml;fter ge&ouml;ffnet und wieder geschlossen wird, k&ouml;nnen Sie auf folgendem Weg Zeit sparen: Setzen Sie einfach die Eigenschaft Sichtbar des Formulars auf Nein, statt das Formular zu schlie&szlig;en. Wenn Sie es anschlie&szlig;end wieder sichtbar machen m&ouml;chten, k&ouml;nnen Sie es ganz normal &ouml;ffnen und sparen die Zeit zum Erstellen der Kalenderstruktur. <\/p>\n<p><IMG height=\"531\" src=\"..\/fileadmin\/_temp_\/{DF641712-43F6-4BA8-A82F-EA0317411BDF}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Entwurfsansicht des Formulars frmKalender<\/span><\/b><\/p>\n<p>Die Beispieldatenbank zum vorliegenden Beitrag enth&auml;lt drei neue Formulare, von denen hier nur das Formular frmKalender ausf&uuml;hrlich beschrieben wird.<\/p>\n<h2>Das Formular frmKalender<\/h2>\n<p>Das Formular zur Anzeige der Fehlzeiten&uuml;bersicht enth&auml;lt die in Bild 2 abgebildeten Steuerelemente. Tab. 1 enth&auml;lt eine &uuml;bersicht &uuml;ber die Steuerelemente mit Namen und Funktion. F&uuml;gen Sie die Steuerelemente gem&auml;&szlig; Bild 2 hinzu und benennen Sie diese entsprechend Tab. 1.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Steuerelementname<\/b><\/p>\n<\/td>\n<td>\n<p><b>Funktion<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cboPersonalID<\/p>\n<\/td>\n<td>\n<p>Kombinationsfeld zur Auswahl des gew&uuml;nschten Mitarbeiters<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtJahr<\/p>\n<\/td>\n<td>\n<p>Textfeld zur Eingabe des anzuzeigenden Jahres<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdNeueAbwesenheit<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zum Anlegen einer neuen Abwesenheit<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdFarbeinstellungen<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zum &ouml;ffnen des Dialogs zum Einstellen der Farben<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>ctlWebbrowser<\/p>\n<\/td>\n<td>\n<p>Webbrowsersteuerelement zur Anzeige des HTML-Seite<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Steuerelemente des Formulars frmKalender<\/b><\/p>\n<p>Das Kombinationsfeld cboMitarbeiterID hat als Datensatzherkunft die folgende Abfrage:<\/p>\n<pre>SELECT PersonalID, [Nachname] & \", \" & [Vorname] AS MitarbeiterFROM tblPersonal;<\/pre>\n<p>Stellen Sie au&szlig;erdem die Eigenschaften Spaltenanzahl und Spaltenbreiten auf die Werte 2 und 0 ein.<\/p>\n<p>Beim Webbrowser-Steuerelement gibt es einige Besonderheiten. Sie finden diese im Beitrag Internetbrowser mit Bookmarkverwaltung. Die Gr&ouml;&szlig;e des Webbrowser-Steuerelements brauchen Sie noch nicht anzupassen &#8211; warten Sie zun&auml;chst ab, welchen Platz der Inhalt der HTML-Seite ben&ouml;tigt. Gestalten Sie das Steuerelement  zu Beginn m&ouml;glichst gro&szlig; und passen Sie es dann an die fertige Darstellung der Fehlzeiten an.<\/p>\n<h3>Verweise auf Objektbibliotheken<\/h3>\n<p>F&uuml;r die Arbeit mit dem Objektmodell des Webbrowser-Steuerelements und mit DHTML sind entsprechende Verweise auf deren Objektbibliotheken erforderlich.<\/p>\n<p>Der Verweis auf die Bibliothek Microsoft Internet Controls wird automatisch erstellt, wenn Sie das Webbrowser-Steuerelement in die Entwurfsansicht des Formulars ziehen. Den Verweis auf die Microsoft HTML Object Library m&uuml;ssen Sie von Hand erstellen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Da die vorgestellten Techniken nicht ADO, sondern DAO verwenden, m&uuml;ssen Sie auch noch einen Verweis auf diese Bibliothek setzen. Weitere Informationen zum Erstellen eines Verweises auf eine Objektbibliothek finden Sie im Beitrag Verweise auf Bibliotheken setzen auf der Heft-CD. <\/p>\n<p><IMG height=\"219\" src=\"..\/fileadmin\/_temp_\/{DF641712-43F6-4BA8-A82F-EA0317411BDF}\/pic003.png\" width=\"266\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Formular zur Bearbeitung der Abwesenheitstypen<\/span><\/b><\/p>\n<h2>Weitere Formulare derBeispieldatenbank<\/h2>\n<p>Das Formular frmAbwesenheitenFarben verwendet die gleiche Technik wie das Formular frmKalender und dient der Bearbeitung und dem Anlegen von Abwesenheitsarten und deren im Formular frmKalender zu verwendenden Farben (siehe Bild 3).<\/p>\n<p>Das Formular frmAbwesenheiten dient der Bearbeitung und der Neuanlage von Abwesenheitsdaten (siehe Bild 4). Seine Funktion ist relativ rudiment&auml;r und beinhaltet beispielsweise nahezu keine Validierung. F&uuml;r weitere Informationen sehen Sie sich den Entwurf und den Quellcode des Formulars in der Beispieldatenbank an.<\/p>\n<p>Die Funktionalit&auml;t des Formulars frmAbwesenheitenFarben ist nicht ganz einfach. Sie baut aber im Wesentlichen auf die im Rahmen der nachfolgend vorgestellten Techniken auf und sollte anschlie&szlig;end anhand des Quellcodes des Formulars gut nachzuvollziehen sein.<\/p>\n<p>Bevor Sie mit der Programmierung des Kalenders beginnen, ben&ouml;tigen Sie noch einige Grundlagen zum Thema HTML\/DHTML.<\/p>\n<p><IMG height=\"252\" src=\"..\/fileadmin\/_temp_\/{DF641712-43F6-4BA8-A82F-EA0317411BDF}\/pic004.png\" width=\"276\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Das Formular frmAbwesenheiten<\/span><\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Der vorliegende Beitrag kann kein umfassendes Grundlagenwissen zu HTML oder DHTML vermitteln. Daher finden Sie hier nur die notwendigsten Informationen, die Sie mit einigem Grundlagenwissen in die jeweiligen Gesamtzusammenh&auml;nge einordnen k&ouml;nnen -falls nicht, so tut es dem Nutzen des Beitrags allerdings keinen Abbruch. <\/p>\n<h2>Aufbau der HTML-Seite<\/h2>\n<p>Wie oben beschrieben, stellen Sie die komplette HTML-Seite dynamisch zusammen. Aber bei aller Dynamik gibt es einige Elemente, die in jeder HTML-Seite enthalten sind (s. Quellcode 1). F&uuml;r den restlichen Inhalt finden Sie in Quellcode 1 das Element &lt;Inhalt&gt; als Platzhalter.<\/p>\n<p>Der Platzhalter wird sp&auml;ter durch eine Tabellenstruktur mit den Monats&uuml;berschriften und den Zahlen f&uuml;r die einzelnen Tage ersetzt. Die &uuml;brigen Elemente teilen dem jeweiligen Browser einige Randinformationen &uuml;ber die Seite mit. Eine Erl&auml;uterung dieser Elemente ist im Rahmen des vorliegenden Beitrags nicht erforderlich.<\/p>\n<pre>&lt;!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\"&gt;\r\n&lt;html&gt;\r\n    &lt;head&gt;\r\n        &lt;title&gt;&lt;\/title&gt;\r\n    &lt;\/head&gt;\r\n    &lt;body&gt;\r\n        &lt;Inhalt&gt;\r\n    &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p><!--30percent--><\/p>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>&lt;table&gt;\r\n    &lt;tr&gt;\r\n        &lt;td&gt;Inhalt Zeile 1, Spalte 1&lt;\/td&gt;\r\n        &lt;td&gt;Inhalt Zeile 1, Spalte 2&lt;\/td&gt;\r\n    &lt;\/tr&gt;\r\n    &lt;tr&gt;\r\n        &lt;td&gt;Inhalt Zeile 2, Spalte 1&lt;\/td&gt;\r\n        &lt;td&gt;Inhalt Zeile 2, Spalte 2&lt;\/td&gt;\r\n    &lt;\/tr&gt;    &lt;tr&gt;\r\n        &lt;td&gt;Inhalt Zeile 3, Spalte 1&lt;\/td&gt;\r\n        &lt;td&gt;Inhalt Zeile 3, Spalte 2&lt;\/td&gt;\r\n    &lt;\/tr&gt;\r\n&lt;\/table&gt;<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<h2>Verwendete HTML-Elemente<\/h2>\n<p>Die Darstellung des Kalenders per HTML erfordert im Wesentlichen nur einige wenige HTML-Elemente. Drei davon dienen der Strukturierung von Tabellen.<\/p>\n<h3>Aufbau von Tabellen mit HTML<\/h3>\n<p>Wenn Sie in HTML eine Tabelle anzeigen m&ouml;chten, teilen Sie dies dem Browser durch das HTML-Element &lt;table&gt; mit. Anschlie&szlig;end folgt der Inhalt der Tabelle, gefolgt von dem schlie&szlig;enden HTML-Element &lt;\/table&gt;.<\/p>\n<h3>Zeilen und Spalten<\/h3>\n<p>Eine neue Zeile in einer HTML-Tabelle wird durch das Element &lt;tr&gt; eingeleitet und mit &lt;\/tr&gt; beendet.<\/p>\n<p>Eine Spalte innerhalb einer Zeile hat einen &auml;hnlichen Aufbau wie eine Spalte: Sie wird durch das Element &lt;td&gt; eingeleitet und mit &lt;\/td&gt; beendet.<\/p>\n<p>Die Spalte ist das kleinste Element innerhalb einer HTML-Tabelle, daher enth&auml;lt sie den eigentlichen Inhalt und entspricht damit einer Zelle.<\/p>\n<p>Eine Tabelle mit drei Zeilen und zwei Spalten erhalten Sie mit dem HTML-Code aus Quellcode 2.<\/p>\n<p>Der Inhalt wird ohne weitere Zeichen wie z. B. Anf&uuml;hrungszeichen einfach zwischen die Elemente &lt;td&gt; und &lt;\/td&gt; platziert.<\/p>\n<h3>Hyperlinks<\/h3>\n<p>Wenn Sie von einer HTML-Seite aus eine andere aufrufen m&ouml;chten, verwenden Sie dazu einen Hyperlink. Hyperlinks haben folgendes Format:<\/p>\n<pre>&lt;a href=\"NaechsteSeite.htm\"&gt;Beschreibung des Hyperlinks&lt;\/a&gt;<\/pre>\n<p>Hyperlinks haben also wieder ein &ouml;ffnendes und ein schlie&szlig;endes Element wie Tabellen, Zeilen und Spalten. Das &ouml;ffnende Element wird allerdings um eine Zusatzinformation erg&auml;nzt: den Namen der Seite, die bei der Bet&auml;tigung des Hyperlinks aufgerufen werden soll. Sie werden sp&auml;ter noch weitere erg&auml;nzende Eigenschaften zu den einzelnen Elementen wie z. B. die Breite von Tabellen und Tabellenspalten kennen lernen.<\/p>\n<p>Hyperlinks haben noch eine Besonderheit: Sie k&ouml;nnen sie verwenden, um Informationen von einer Seite zur n&auml;chsten zu &uuml;bergeben. Dazu erg&auml;nzen Sie den Hyperlink um das Fragezeichen-Symbol () und f&uuml;gen der Adresse ein Paar aus Parameternamen und Wert, getrennt durch ein Gleichheitszeichen, hinzu, zum Beispiel:<\/p>\n<pre>&lt;a href=\"NaechsteSeite.htmParameter1=Wert1\"&gt;Beschreibung des Hyperlinks&lt;\/a&gt;<\/pre>\n<p>Wenn Sie mehrere Parameter &uuml;bergeben m&ouml;chten, setzen Sie hinter den letzten Wert ein Kaufmanns-Und (&#038;) gefolgt von dem n&auml;chsten Parameter.<\/p>\n<h2>Verwendung von DHTML<\/h2>\n<p>DHTML bietet die M&ouml;glichkeit, den kompletten Inhalt von HTML-Dokumenten dynamisch anzupassen sowie Elemente hinzuzuf&uuml;gen, zu l&ouml;schen und deren Eigenschaften zu &auml;ndern.<\/p>\n<p>Damit Sie mit DHTML einzelne Elemente einer HTML-Seite ansprechen k&ouml;nnen, m&uuml;ssen Sie ihnen einen Namen oder eine ID zuweisen.<\/p>\n<p>Einige Elemente ben&ouml;tigen keine besondere Kennzeichnung, da sie innerhalb des Dokuments einzigartig sind &#8211; z. B. das den Inhalt umschlie&szlig;ende Body-Element.<\/p>\n<p>Die Zusammenstellung der Tabelle zur Darstellung des Kalenders aus Bild 1 erfordert einige hundert HTML-Elemente einschlie&szlig;lich der Anpassung ihrer Eigenschaften.<\/p>\n<p>Da das einzelne Erstellen jedes dieser Steuerelemente und die Anpassung ihrer Eigenschaften per DHTML einige Zeit erfordern w&uuml;rde, gehen Sie im Folgenden einen etwas anderen Weg:<\/p>\n<p>Sie erstellen zun&auml;chst den kompletten HTML-Code f&uuml;r die Seite und schreiben ihn anschlie&szlig;end in die zuvor initialisierte leere Seite. Das geschieht mit der folgenden Methode der MSHTML-Bibliothek (vorausgesetzt das Webbrowser-Steuerelement hei&szlig;t ctlWebbrowser):<\/p>\n<pre>ctlWebbrowser.Document.Write strHTML<\/pre>\n<h3>HTML-Elemente mit DHTML ansprechen<\/h3>\n<p>Wenn Sie HTML-Elementen mit dem ID-Attribut eine eindeutige ID zugewiesen haben, k&ouml;nnen Sie die Eigenschaften des jeweiligen Elementes dynamisch &auml;ndern.<\/p>\n<p>Die Funktionalit&auml;t des Kalenderformulars beinhaltet folgende M&ouml;glichkeiten:<\/p>\n<li>Laden des leeren Dokuments<\/li>\n<li>Anlegen der Kalenderstruktur<\/li>\n<li>Markieren der Fehlzeiten<\/li>\n<li>Festlegen der Aktionen zum Hinzuf&uuml;gen, L&ouml;schen und Bearbeiten der Fehlzeiten<\/li>\n<h2>Initialisieren des Formulars<\/h2>\n<p>Bevor der Hauptakt beginnt und das Webbrowser-Steuerelement mit Leben gef&uuml;llt wird, muss das Formular zun&auml;chst initialisiert werden.<\/p>\n<p>Hinterlegen Sie anschlie&szlig;end die folgende Prozedur f&uuml;r die Ereigniseigenschaft Beim &ouml;ffnen des Formulars:<\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    Me.txtJahr = Year(Date)\r\nEnd Sub<\/pre>\n<p>Damit weisen Sie dem Textfeld txtJahr das aktuelle Jahr hinzu.<\/p>\n<p>Die Ereigniseigenschaft Beim Anzeigen soll mit der folgenden Prozedur versehen werden:<\/p>\n<pre>Private Sub LoadHTML()\r\n    Dim i, j, Tag, Woche, Monat As Integer\r\n    Dim Datum, ErsterTag, AktuellerTag As Date\r\n    Dim AktuellerMonat As Boolean\r\n    Dim id, Monatsname, strHTML, Style As String\r\n    DoCmd.Hourglass True\r\n    Monat = 1\r\n    strHTML = strHTML & \"&lt;!DOCTYPE HTML PUBLIC \"\"-\/\/W3C\/\/DTD HTML 4.0 \" _        & \"Transitional\/\/EN\"\"&gt;\"\r\n    strHTML = strHTML & \"&lt;html&gt;\"\r\n    strHTML = strHTML & \"&lt;head&gt;\"\r\n    strHTML = strHTML & \"&lt;title&gt;&lt;\/title&gt;\"\r\n    strHTML = strHTML & \"&lt;style type=\"\"text\/css\"\"&gt;\"\r\n    strHTML = strHTML & \"&lt;!--\"\r\n    strHTML = strHTML & \"a:active {color: black}\"\r\n    strHTML = strHTML & \"a:visited {color: black}\"\r\n    strHTML = strHTML & \"a:link {color: black}\"\r\n    strHTML = strHTML & \"a:hover {color: red}\"\r\n    strHTML = strHTML & \"--&gt;\"\r\n    strHTML = strHTML & \"&lt;\/style&gt;\"\r\n    strHTML = strHTML & \"&lt;\/head&gt;\"\r\n    strHTML = strHTML & \"&lt;body bottomMargin=\"\"0\"\" leftMargin=\"\"0\"\" topMargin=\"\"0\"\"\" _        & \" rightMargin=\"\"0\"\" scroll=\"\"yes\"\"&gt;\"\r\n    strHTML = strHTML & \"&lt;table border=\"\"0\"\" cell-padding=\"\"0\"\" cell-spacing=\"\"0\"\"&gt;\" _        & vbCrLf\r\n    For i = 1 To 3\r\n        strHTML = strHTML & \"&lt;tr&gt;\" & vbCrLf\r\n        For j = 1 To 4\r\n            Datum = \"1.\" & Monat & \".\" & Me.txtJahr\r\n            ErsterTag = ErstenTagDerWocheErmitteln(Datum)\r\n            AktuellerTag = ErsterTag\r\n            Style = \"font-family:tahoma;font-size:9;text-align:center;\" _                & \"background-color:#c0c0c0;\"\r\n            strHTML = strHTML & \"&lt;td&gt;\" & vbCrLf\r\n            strHTML = strHTML & \"&lt;table border=\"\"0\"\" cell-padding=\"\"0\"\"\" _                & \" cell-spacing=\"\"0\"\"&gt;\" & vbCrLf\r\n            strHTML = strHTML & \"&lt;tr&gt;\" & vbCrLf\r\n            Monatsname = Choose((j + (i - 1) * 4), \"Januar\", \"Februar\", \"M&auml;rz\", _                \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", _                \"November\", \"Dezember\")\r\n            strHTML = strHTML & \"&lt;td style=\"\"\" & Style & \"\"\" colspan=\"\"7\"\"&gt;\" _                & Monatsname & \"&lt;\/td&gt;\" & vbCrLf\r\n            strHTML = strHTML & \"&lt;\/tr&gt;\" & vbCrLf\r\n            strHTML = strHTML & \"&lt;tr&gt;\" & vbCrLf\r\n            strHTML = strHTML & \"&lt;td style=\"\"\" & Style & \"\"\"&gt;M&lt;\/td&gt;\" & vbCrLf\r\n            ''analog f&uuml;r die Tage Dienstag bis Sonntag\r\n            strHTML = strHTML & \"&lt;\/tr&gt;\" & vbCrLf\r\n            For Woche = 1 To 6\r\n                strHTML = strHTML & \"&lt;tr&gt;\" & vbCrLf\r\n                For Tag = 1 To 7\r\n                    AktuellerMonat = (Month(AktuellerTag) = Monat)<\/pre>\n<p><b>Quellcode 3 (Teil 1)<\/b><\/p>\n<pre>Private Sub Form_Current()\r\n    Me.cboPersonalID = _        Me.cboPersonalID.ItemData(0)\r\n    LoadHTML\r\nEnd Sub<\/pre>\n<p>Sie w&auml;hlt im Kombinationsfeld cboPersonalID den ersten Eintrag aus und ruft die Prozedur LoadHTML auf. <\/p>\n<h2>Anlegen der Kalenderstruktur<\/h2>\n<pre>                    If Not AktuellerMonat Then\r\n                        Style = \"color:#ffffff;\"\r\n                        id = \"\"\r\n                    Else\r\n                        id = DatumYMD(AktuellerTag)\r\n                        If Weekday(AktuellerTag) = 1 Or Weekday(AktuellerTag) = 7 Then\r\n                            Style = \"color:#000000;font-weight:bold;\"\r\n                        Else\r\n                            Style = \"color:#000000;font-weight:normal;\"\r\n                        End If\r\n                    End If\r\n                    strHTML = strHTML & \"&lt;td style=\"\"\" & Style _                        & \"font-family:tahoma;font-size:9;text-align:center\"\" id=\"\"\" _                        & id & \"\"\"&gt;\" & Day(AktuellerTag) & \"&lt;\/td&gt;\" & vbCrLf\r\n                    AktuellerTag = AktuellerTag + 1\r\n                Next Tag\r\n                strHTML = strHTML & \"&lt;\/tr&gt;\" & vbCrLf\r\n            Next Woche\r\n            strHTML = strHTML & \"&lt;\/table&gt;\"\r\n            Monat = Monat + 1\r\n            strHTML = strHTML & \"&lt;\/td&gt;\" & vbCrLf\r\n        Next j\r\n        strHTML = strHTML & \"&lt;\/tr&gt;\" & vbCrLf\r\n    Next i\r\n    strHTML = strHTML & \"&lt;\/table&gt;\" & vbcrlf & \"&lt;\/body&gt;\" & vbcrlf & \"&lt;\/html&gt;\"\r\n    On Error Resume Next\r\n    Debug.Print ctlWebbrowser.document\r\n    If Err.Number = 91 Then\r\n        ctlWebbrowser.navigate \"about:blank\"\r\n    End If\r\n    ctlWebbrowser.document.Open\r\n    ctlWebbrowser.document.write strHTML\r\n    ctlWebbrowser.document.Close\r\n    FehlzeitenEintragen\r\n    DoCmd.Hourglass False\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3 (Fortsetzung)<\/b><\/p>\n<p>Nun kommt das Webbrowser-Steuerelement ins Spiel: <\/p>\n<p>Durch die soeben ausgel&ouml;ste Prozedur LoadHTML wird das gew&uuml;nschte HTML-Dokument zusammengestellt und im Anschluss dem im Webbrowser-Steuerelement  zusammengestellten zugewiesen (s. Quellcode 3).<\/p>\n<p>Nach dem Deklarationsteil f&uuml;gt die Prozedur Schritt f&uuml;r Schritt die ben&ouml;tigte HTML-Seite mit der Tabellenstruktur und den entsprechenden HTML-Elementen und Daten zusammen.<\/p>\n<pre>Private Sub FehlzeitenEintragen()\r\n    Dim db As Database\r\n    Dim rstFehlzeiten As Recordset\r\n    Dim Tag As Date\r\n    Dim Linkstart, Linkende As String\r\n    Set db = CurrentDb\r\n    Set rstFehlzeiten = db.OpenRecordset(\"SELECT * FROM tblAbwesenheit \" _        & \"WHERE PersonalID = \" & Me.cboPersonalID & \" ORDER BY Startdatum\", _        dbOpenDynaset)\r\n    Do While Not rstFehlzeiten.EOF\r\n        For Tag = rstFehlzeiten!StartDatum To rstFehlzeiten!EndDatum\r\n            If Year(Tag) = CInt(Me.txtJahr) Then\r\n                Linkstart = \"&lt;a href=\"\"dummy.htmAktion=AbwesenheitAnzeigen\" _                    & \"&AbwesenheitID=\" & rstFehlzeiten!AbwesenheitID _                    & \"\"\" style=\"\"text-decoration:none\"\"&gt;\"\r\n                Linkende = \"&lt;\/a&gt;\"\r\n                If Year(Tag) &lt; CInt(Me.txtJahr) Then\r\n                    Tag = Tag + 1\r\n                End If\r\n                With Forms!frmKalender!ctlWebbrowser. _                    Document.getElementById(DatumYMD(Tag))\r\n                    .Style.background = DLookup(\"Farbcode\", _                        \"tblAbwesenheitsarten\", \"AbwesenheitsartID = \" _                        & rstFehlzeiten!Abwesenheitart)\r\n                    .innerHTML = Linkstart & .innerHTML & Linkende\r\n                End With\r\n            End If\r\n        Next Tag\r\n        rstFehlzeiten.MoveNext\r\n    Loop\r\n    Exit Sub\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<p>Da die Erstellung des HTML-Codes einige Sekunden dauert, ersetzt die Prozedur w&auml;hrend des Ablaufs den Mauszeiger durch die Sanduhr.<\/p>\n<p>Anschlie&szlig;end f&uuml;gt die Prozedur die einleitenden Elemente der HTML-Seite hinzu. Anschlie&szlig;end folgt der spannende Teil: die Tabelle zur Anzeige des Kalenders.<\/p>\n<p>Der entsprechende HTML-Code beginnt mit dem Element &lt;table&gt;. Es enth&auml;lt einige weitere Informationen:<\/p>\n<p>Border=&#8220;0&#8243; bewirkt die Anzeige eines Rahmens mit der Dicke 0. Die beiden Parameter Cell-Padding und Cell-Spacing dienen der Einstellung des Abstandes zwischen den Zellen sowie vom Zellenrand zum Inhalt.<\/p>\n<p>Anschlie&szlig;end sorgen vier ineinander verschachtelte Schleifen f&uuml;r die Erstellung des Tabelleninhalts. Die beiden &auml;u&szlig;eren Schleifen sorgen f&uuml;r die Erstellung einer Tabelle von vier mal drei Zellen, die der Anzeige der einzelnen Monate dienen.<\/p>\n<p>Die beiden inneren Schleifen werden f&uuml;r jeden Monat einmal durchlaufen und erstellen in jeder Zelle eine weitere Tabelle. Die inneren Tabellen bestehen aus insgesamt je acht Zeilen.<\/p>\n<p>Die erste Zeile enth&auml;lt den Monatsnamen und die zweite Zeile sieben Zellen zur Anzeige des ersten Buchstabens des jeweiligen Tages (also M, D, M, D, F, S, S).<\/p>\n<p>Die &uuml;brigen sechs Zeilen enthalten je sieben Zellen zur Darstellung der Tage des aktuellen Monats (zwar umfasst jeder Monat maximal knapp f&uuml;nf Wochen, die aber sechs Kalenderwochen tangieren k&ouml;nnen).<\/p>\n<p>W&auml;hrend der Aufbau der eigentlichen Tabelle noch recht einfach ist, gestaltet sich das F&uuml;llen der Zellen mit den richtigen Datumsangaben als relativ knifflig.<\/p>\n<pre>Public Function ErstenTagDerWocheErmitteln(StartDatum _    As Date) As Date\r\n    Do While Not DatePart(\"w\", StartDatum, vbMonday, _        vbFirstFourDays) = 1\r\n        StartDatum = StartDatum - 1\r\n    Loop\r\n    ErstenTagDerWocheErmitteln = StartDatum\r\nEnd Function<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>Private Sub KalenderLeeren()\r\n    Dim Element As Variant\r\n    For Each Element In _        Forms!frmKalender!ctlWebbrowser.Document.all\r\n        If Not Element.id = \"\" Then\r\n            Element.innerHTML = _                Day(DatumAusISO(Element.id))\r\n            Element.Style.background = \"#ffffff\"\r\n        End If\r\n    Next\r\nEnd Sub<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p>Um die Tabelle von links oben nach rechts unten mit den richtigen Monatstagen zu f&uuml;llen, m&uuml;ssen Sie zun&auml;chst einmal herausfinden, welches Datum der Montag der Woche hat, in der der Monat beginnt. Dazu verwenden Sie die Funktion ErstenTagDerWocheErmitteln (s. Quellcode 4) mit dem Parameter Startdatum.<\/p>\n<p>Nachdem Sie das Datum f&uuml;r die linke obere Zelle kennen, k&ouml;nnen Sie die Zellen nacheinander mit dem Datum f&uuml;llen.<\/p>\n<p>Dabei &uuml;berpr&uuml;ft die Prozedur gleichzeitig, ob der Tag zum aktuellen Monat oder zum vorherigen oder nachfolgenden Monat geh&ouml;rt. Falls der aktuelle Tag nicht zum aktuellen Monat geh&ouml;rt, wird er erst gar nicht angezeigt.<\/p>\n<h3>Wochenenden markieren<\/h3>\n<p>Die Tage des Wochenendes, also Samstag und Sonntag, sollen fett gedruckt werden. Daher &uuml;berpr&uuml;ft die Prozedur mit der Funktion Weekday den Wochentag und setzt das Schriftformat  entsprechend auf Fett.<\/p>\n<h3>Lesezeichen auf Tage setzen<\/h3>\n<p>Die Prozedur erstellt lediglich die Tabelle mit den Zahlen f&uuml;r die Datumsangaben, tr&auml;gt aber noch keine Abwesenheitszeiten in Form von farbiger Markierung der entsprechenden Tabellenzellen ein.<\/p>\n<p>Damit die nachfolgend beschriebenen Prozeduren leicht per DHTML-Anweisung auf die entsprechenden Tabellenelemente zugreifen k&ouml;nnen, um deren Hintergrundfarbe zu &auml;ndern, versieht die Prozedur jede Zelle, die ein Datum enth&auml;lt, mit einer ID. Jede ID besteht auch acht Zeichen und enth&auml;lt die Angabe des Jahres (vierstellig), die Angabe des Monats (zweistellig) sowie die Angabe des Tages (ebenfalls zweistellig).<\/p>\n<h3>HTML anzeigen<\/h3>\n<p>Nach dem Zusammenstellen des HTML-Textes in der String-Variablen strHTML &uuml;berpr&uuml;ft die Prozedur, ob das Webbrowser-Steuerelement  bereits initialisiert wurde. Falls nicht, wird dies mit dem folgenden Befehl nachgeholt:<\/p>\n<pre>ctlWebbrowser.navigate \"about:blank\"<\/pre>\n<p>Die folgenden drei Zeilen sorgen f&uuml;r die Zuweisung der zusammengestellten Zeichenkette an die aktuelle Seite:<\/p>\n<pre>    ctlWebbrowser.document.Open\r\n    ctlWebbrowser.document.write strHTML\r\n    ctlWebbrowser.document.Close<\/pre>\n<p>Anschlie&szlig;end ruft die Prozedur noch die Prozedur FehlzeitenEintragen auf, damit die Fehlzeiten des aktuellen Mitarbeiters f&uuml;r das angezeigte Jahr farbig markiert werden.<\/p>\n<h2>Markieren der Fehlzeiten<\/h2>\n<p>Nachdem der HTML-Quellcode f&uuml;r die Anzeige des Jahreskalenders durch die Prozedur aus Quellcode 3 erstellt wurde, soll der Kalender um die in Tabelle tblAbwesenheit gespeicherten Fehlzeiten erweitert werden.<\/p>\n<p>Das Markieren der Fehlzeiten erfolgt mit der Prozedur FehlzeigenEintragen (s. Quellcode 5).<\/p>\n<p>Die Prozedur durchl&auml;uft alle Eintr&auml;ge der Tabelle tblAbwesenheit f&uuml;r den aktuell im Kombinationsfeld cboPersonalID ausgew&auml;hlten Mitarbeiter.<\/p>\n<p>In einer weiteren Schleife werden nun alle Tage der Fehlzeit des aktuellen Datensatzes durchlaufen. Falls der aktuelle Tag innerhalb des aktuell angezeigten Jahres liegt, f&auml;rbt die Prozedur die Zelle der Tabelle mit der entsprechenden ID in der Farbe ein, die der Abwesenheitsart zugeordnet ist.<\/p>\n<h3>Hintergrundfarbe vonElementen per DHTML &auml;ndern<\/h3>\n<p>An dieser Stelle kommt erneut DHTML zum Einsatz. Mit dem folgenden Ausdruck referenziert die Prozedur die Zelle der Tabelle, die zu dem Datum des aktuellen Tages der aktuellen Fehlzeit geh&ouml;rt:<\/p>\n<pre>Forms!frmKalender!ctlWebbrowser.Document_    .getElementById(DatumYMD(Tag))<\/pre>\n<p>&uuml;ber die Eigenschaft Background der Auflistung Style stellt die Prozedur die Hintergrundfarbe der Zelle ein.<\/p>\n<p>Die Eigenschaft innerHTML beinhaltet alles, was sich zwischen dem &ouml;ffnenden und schlie&szlig;enden Element der Tabellenzelle befindet. &uuml;ber diese Eigenschaft weist die Prozedur der Tabellenzelle einen Hyperlink zu.<\/p>\n<h2>Entfernen der Fehlzeiten<\/h2>\n<p>Wenn das Formular die Fehlzeiten f&uuml;r einen anderen Mitarbeiter oder f&uuml;r ein anderes Jahr anzeigen soll, verwenden Sie ebenfalls die Prozedur FehlzeitenEintragen.<\/p>\n<p>Allerdings m&uuml;ssen Sie zuvor die anderen eingetragenen Markierungen aus dem HTML-Code entfernen. Dazu verwenden Sie die Prozedur KalenderLeeren aus Quellcode 5.<\/p>\n<p>Die Prozedur durchl&auml;uft einfach alle HTML-Elemente auf der kompletten Seite und &uuml;berpr&uuml;ft, ob sie eine ID haben &#8211; was auf eines der Datumsfelder hinweist.<\/p>\n<p>Falls eine ID vorhanden ist, wandelt die Funktion DatumAusISO die ID in das entsprechende Datum um. Die Funktion Day ermittelt den Tag aus dem berechneten Datum.<\/p>\n<p>Anschlie&szlig;end f&uuml;gt die Prozedur den Tag f&uuml;r die Eigenschaft innerHTML der Zelle ein und setzt die Hintergrundfarbe der Zelle auf Wei&szlig;.<\/p>\n<h2>Der Clou: Interaktion zwischenWebbrowser-Steuerelementund Formular<\/h2>\n<p>Bisher haben Sie das Webbrowser-Steuerelement zur Anzeige der gew&uuml;nschten Daten verwendet und durch die Anwendung von DHTML innerhalb herk&ouml;mmlicher VBA-Prozeduren Elemente einer HTML-Seite dynamisch ge&auml;ndert, was &uuml;blicherweise nur von HTML-Seiten aus erfolgen kann &#8211; z. B. per Javascript.<\/p>\n<p>Nun wird die Geschichte noch ein wenig spannender: Sie bewegen das Webbrowser-Steuerelement dazu, auf verschiedene Eingaben &#8211; z. B. einen Mausklick auf markierte Fehlzeiten &#8211; mit dem &ouml;ffnen eines weiteren Formulars zu reagieren. Dieses Formular dient zum Bearbeiten und L&ouml;schen der vorhandenen Eintr&auml;ge (siehe Bild 5).<\/p>\n<p><IMG height=\"252\" src=\"..\/fileadmin\/_temp_\/{DF641712-43F6-4BA8-A82F-EA0317411BDF}\/pic005.png\" width=\"276\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Eingabe einer neuen Fehlzeit<\/span><\/b><\/p>\n<h3>Abfangen des Hyperlinks<\/h3>\n<p>Die Frage ist nur: Wie setzt man aus einem HTML-Dokument eine Anweisung zum &ouml;ffnen eines Formulars oder zur Durchf&uuml;hrung anderer Aktionen ab Die Antwort lautet:<\/p>\n<p>Es ist unm&ouml;glich. Sie k&ouml;nnen von HTML-Dokumenten aus nicht direkt auf andere Anwendungen einwirken.<\/p>\n<p>Es gibt allerdings den folgenden Trick, der darauf basiert, dass Sie &#8211; im Gegensatz zur Verwendung des Internet Explorers &#8211; die volle Kontrolle &uuml;ber den Browser und damit &uuml;ber seine Ereigniseigenschaften haben: Sie verwenden einen Hyperlink und fangen das Laden der neuen Seite einfach durch Abbrechen der entsprechenden Ereignisprozedur ab.<\/p>\n<p>Der entsprechende Hyperlink wird ja bereits in der Prozedur FehlzeitenEintragen f&uuml;r die einzelnen Tages-Tabellenelemente der Fehlzeiten gesetzt.<\/p>\n<p>Dabei setzt die Prozedur die folgenden beiden Zeichenketten und die Angabe des Kalendertages zusammen:<\/p>\n<pre>Linkstart = \"&lt;a href=\"\"dummy.htm\" _\r\n    & \"Aktion=AbwesenheitAnzeigen&\" _\r\n    & \"AbwesenheitID=\" _\r\n    & rstFehlzeiten!AbwesenheitID _\r\n    & \"\"\" style=\"\"text-decoration\" _\r\n    & \":none\"\"&gt;\"\r\nLinkende = \"&lt;\/a&gt;\"<\/pre>\n<p>Der resultierende Hyperlink in der Tabellenzelle sieht z. B. folgenderma&szlig;en aus:<\/p>\n<pre>&lt;a href=\"dummy.htmAktion=AbwesenheitAnzeigen&AbwesenheitID=12\" style=\"text-decoration:none\"&gt;14&lt;\/a&gt;<\/pre>\n<p>Das Ziel des Hyperlinks ist die Seite dummy.htm. Hier k&ouml;nnen Sie allerdings jede beliebige Seite eintragen, da die Prozedur den Aufruf der Seite ohnehin abbricht.<\/p>\n<p>Wichtiger ist die &uuml;bergabe der beiden Parameter Aktion und AbwesenheitID. Der Parameter Aktion enth&auml;lt einen Wert f&uuml;r die durchzuf&uuml;hrende Aktion, hier z. B. AbwesenheitAnzeigen.<\/p>\n<p>Der Parameter AbwesenheitID enth&auml;lt den Prim&auml;rschl&uuml;ssel der Tabelle tblAbwesenheit, aus der die entsprechenden Daten stammen.<\/p>\n<p>Der Wert text-decoration:none f&uuml;r die Eigenschaft style des Hyperlinks sorgt daf&uuml;r, dass der Hyperlink nicht wie &uuml;blich blau und unterstrichen angezeigt wird.<\/p>\n<h3>Ereigniseigenschaft zum Laden einer neuen Seite<\/h3>\n<p>Die Ereigniseigenschaft BeforeNavigate2 wird vor dem Aufrufen der im Hyperlink angegebenen Seite ausgel&ouml;st.<\/p>\n<p>Sie enth&auml;lt den wichtigen Parameter URL, der den kompletten Link inklusive der angegebenen Parameter enth&auml;lt.<\/p>\n<p>Die Prozedur verwendet die Funktion QueryStringErmitteln, um aus dem Parameter URL den Wert einzelner Parameter auszulesen. Die Funktion finden Sie im Modul modTools der Datenbank.<\/p>\n<pre>Private Sub ctlWebbrowser_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, _    Flags As Variant, TargetFrameName As Variant, PostData As Variant, _    Headers As Variant, Cancel As Boolean)\r\n    If Right(URL, 13) &lt;&gt; \"WhitePage.htm\" Then\r\n        Dim Aktion As Variant\r\n        Dim AbwesenheitID As Integer\r\n        Aktion = QueryStringErmitteln(\"Aktion\", URL)\r\n        Select Case Aktion\r\n            Case \"AbwesenheitAnzeigen\"\r\n                AbwesenheitID = CInt(QueryStringErmitteln(\"AbwesenheitID\", URL))\r\n                DoCmd.OpenForm \"frmAbwesenheiten\", _                    WhereCondition:=\"AbwesenheitID = \" & AbwesenheitID, _                    DataMode:=acFormEdit, _                    WindowMode:=acDialog\r\n                KalenderLeeren\r\n                FehlzeitenEintragen\r\n        End Select\r\n        Cancel = True\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p>Mit dieser Funktion ermittelt die Prozedur zun&auml;chst den Wert des Parameters Aktion. In einer Select-Case-Abfrage springt sie dann auf die gew&uuml;nschte Aktion &#8211; in diesem Fall AbwesenheitAnzeigen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Verwendung einer Select-Case-Anweisung scheint hier nicht angebracht, da es nur einen m&ouml;glichen Wert gibt. Sie sind aber hiermit direkt ger&uuml;stet, weitere Aktionen vom HTML-Dokument aus zu starten. <\/p>\n<p>Der innere Teil der Select-Case-Anweisung fragt den Wert des Parameters AbwesenzeitID ab. Der Wert dient gleichzeitig als &uuml;bergabeparameter beim Aufruf des Formulars frmAbwesenheiten, mit dem Sie die gew&uuml;nschte Abwesenheit bearbeiten oder l&ouml;schen k&ouml;nnen.<\/p>\n<p>Das Formular frmAbwesenheiten wird mit den Parametern DataMode:=acFormEdit und WindowMode:=acDialog ge&ouml;ffnet. Der zweite Parameter gibt an, dass die Verarbeitung der aufrufenden Prozedur erst fortgesetzt wird, wenn das Formular geschlossen oder seine Eigenschaft Sichtbar auf den Wert Nein gesetzt wird. Dadurch kann der Anwender zun&auml;chst in Ruhe die Eigenschaften der Fehlzeit im Formular bearbeiten und dieses schlie&szlig;en, bevor die Prozedur das HTML-Dokument mit den neuen Informationen aktualisiert.<\/p>\n<p>Wenn Sie das Formular frmAbwesenheiten nach Durchf&uuml;hrung der &auml;nderungen schlie&szlig;en, aktualisiert die Prozedur den Inhalt des Kalenders durch den Aufruf der beiden Prozeduren KalenderLeeren und FehlzeitenEintragen.<\/p>\n<h2>Neue Abwesenheit eintragen<\/h2>\n<p>Das Formular enth&auml;lt noch eine Schaltfl&auml;che, mit der Sie eine neue Abwesenheit eintragen k&ouml;nnen. Diese Schaltfl&auml;che l&ouml;st die Prozedur aus Quellcode 8 aus.<\/p>\n<pre>Private Sub cmdNeueAbwesenheit_Click()\r\n    DoCmd.OpenForm \"frmAbwesenheiten\", _        DataMode:=acFormAdd, _        WindowMode:=acDialog\r\n    KalenderLeeren\r\n    FehlzeitenEintragen\r\nEnd Sub<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<p>Sie &ouml;ffnet lediglich das Formular frmAbwesenheiten und aktualisiert nach dem Schlie&szlig;en dieses Formulars den Inhalt des Kalenders.<\/p>\n<p>Dabei &uuml;bergibt die Prozedur die beiden Parameter DataMode:=acFormAdd und WindowMode:=acDialog an das Formular.<\/p>\n<p>Mit dem ersten Parameter wird festgelegt, dass das Formular mit einem neuen, leeren Datensatz ge&ouml;ffnet werden soll.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Funktionalit&auml;t des Formulars frmAbwesenheiten kann aus Platzgr&uuml;nden hier leider nicht beschrieben werden. Sie enth&auml;lt allerdings keine ungew&ouml;hnlichen Techniken. Bei Interesse schauen Sie sich einfach den Quellcode des Formulars an. <\/p>\n<p>Das Webbrowser-Steuerelement bietet mit der Anwendung von HTML erhebliche Flexibilit&auml;t bei der visuellen Darstellung von Daten, solange die Darstellung nicht gerade die Verwendung von Tortendiagrammen oder &auml;hnlichen runden Objekten erfordert- die Elemente sollten also m&ouml;glichst durch rechteckige Gebilde veranschaulicht werden k&ouml;nnen.<\/p>\n<p>Durch die M&ouml;glichkeit der Interaktivit&auml;t zwischen HTML-Dokument und Access entsteht eine fruchtbare Zusammenarbeit dieser beiden Komponenten, die weitere M&ouml;glichkeiten er&ouml;ffnet.<\/p>\n<p>Sie k&ouml;nnten das vorhandene Dokument beispielsweise dazu verwenden, direkt per Mausklick die Bereiche der Abwesenheit festzulegen oder zu l&ouml;schen.<\/p>\n<p>Das bestehende Formular mit dem HTML-Dokument l&auml;sst sich leicht weiterentwickeln. So sollte z. B. die Anzeige von Feiertagen keine gro&szlig;e H&uuml;rde sein, wenn Sie den Beitrag Feiertage berechnen mit Access hinzuziehen.<\/p>\n<p>Auch die komplette Umgestaltung des HTML-Dokuments ist denkbar: Sie k&ouml;nnten mit wenigen Handgriffen eine Anzeige erreichen, die alle Mitarbeiter mit einem entsprechenden Zeitstrahl untereinander anzeigt. So l&auml;sst sich leicht ablesen, ob zu einem bestimmten Zeitpunkt &uuml;berhaupt Urlaub vergeben werden kann.<\/p>\n<p>Dazu m&uuml;ssen Sie lediglich die Struktur der Tabelle so anpassen, dass die Monate nicht mehr in der Vier-mal-drei-Matrix, sondern hintereinander dargestellt werden. Bei den Tagen gehen Sie &auml;hnlich vor: Statt in der Sechs-mal-sieben-Matrix positionieren Sie die Zellen einfach hintereinander.<\/p>\n<p>Schlie&szlig;lich m&uuml;ssen Sie nur noch eine Datensatzgruppe mit allen Mitarbeitern &ouml;ffnen, die Sie komplett durchlaufen. W&auml;hrend des Durchlaufs erstellen Sie dann f&uuml;r jeden Mitarbeiter einen Zeitstrahl, auf dem alle Fehlzeiten zu erkennen sind. So k&ouml;nnen Sie direkt ablesen, wann durch fehlende Mitarbeiter Engp&auml;sse entstehen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Visualisierung von Daten unter Access ist zwar m&ouml;glich, aber nur f&uuml;r bestimmte Arten von Daten und in recht eingeschr&auml;nkter Form. Microsoft Graph sowie die Pivot-Ansichten von Daten bieten zwar die M&ouml;glichkeit, z. B. den Verlauf von bestimmten Zahlen &uuml;ber ausgew&auml;hlte Zeitr&auml;ume anzuzeigen, aber das Ausgabeformat ist weitgehend vorgegeben und erlaubt keine Interaktivit&auml;t. Wenn Sie aber beispielsweise die Urlaubs- und Abwesenheitsdaten von Mitarbeitern grafisch aufbereiten m&ouml;chten, haben Sie mit den Bordmitteln von Access keine Chance. Hier helfen nur viel Fantasie und der Einsatz ungew&ouml;hnlicher Werkzeuge.<\/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":[66012003,662003,44000026,44000030,44000023],"tags":[],"class_list":["post-55000093","post","type-post","status-publish","format-standard","hentry","category-66012003","category-662003","category-Interaktiv","category-Internet","category-Mit_Formularen_arbeiten"],"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>Daten visualisieren mit HTML - 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\/Daten_visualisieren_mit_HTML\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Daten visualisieren mit HTML\" \/>\n<meta property=\"og:description\" content=\"Die Visualisierung von Daten unter Access ist zwar m&ouml;glich, aber nur f&uuml;r bestimmte Arten von Daten und in recht eingeschr&auml;nkter Form. Microsoft Graph sowie die Pivot-Ansichten von Daten bieten zwar die M&ouml;glichkeit, z. B. den Verlauf von bestimmten Zahlen &uuml;ber ausgew&auml;hlte Zeitr&auml;ume anzuzeigen, aber das Ausgabeformat ist weitgehend vorgegeben und erlaubt keine Interaktivit&auml;t. Wenn Sie aber beispielsweise die Urlaubs- und Abwesenheitsdaten von Mitarbeitern grafisch aufbereiten m&ouml;chten, haben Sie mit den Bordmitteln von Access keine Chance. Hier helfen nur viel Fantasie und der Einsatz ungew&ouml;hnlicher Werkzeuge.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:22+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2\" \/>\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=\"28\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Daten visualisieren mit HTML\",\"datePublished\":\"2020-05-06T15:17:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/\"},\"wordCount\":4719,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/ce4b2ca175974255b52ac594c765d1f2\",\"articleSection\":[\"1\\\/2003\",\"2003\",\"Interaktiv\",\"Internet\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/\",\"name\":\"Daten visualisieren mit HTML - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/ce4b2ca175974255b52ac594c765d1f2\",\"datePublished\":\"2020-05-06T15:17:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/ce4b2ca175974255b52ac594c765d1f2\",\"contentUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/ce4b2ca175974255b52ac594c765d1f2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_visualisieren_mit_HTML\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Daten visualisieren mit HTML\"}]},{\"@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":"Daten visualisieren mit HTML - 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\/Daten_visualisieren_mit_HTML\/","og_locale":"de_DE","og_type":"article","og_title":"Daten visualisieren mit HTML","og_description":"Die Visualisierung von Daten unter Access ist zwar m&ouml;glich, aber nur f&uuml;r bestimmte Arten von Daten und in recht eingeschr&auml;nkter Form. Microsoft Graph sowie die Pivot-Ansichten von Daten bieten zwar die M&ouml;glichkeit, z. B. den Verlauf von bestimmten Zahlen &uuml;ber ausgew&auml;hlte Zeitr&auml;ume anzuzeigen, aber das Ausgabeformat ist weitgehend vorgegeben und erlaubt keine Interaktivit&auml;t. Wenn Sie aber beispielsweise die Urlaubs- und Abwesenheitsdaten von Mitarbeitern grafisch aufbereiten m&ouml;chten, haben Sie mit den Bordmitteln von Access keine Chance. Hier helfen nur viel Fantasie und der Einsatz ungew&ouml;hnlicher Werkzeuge.","og_url":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:22+00:00","og_image":[{"url":"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"28\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Daten visualisieren mit HTML","datePublished":"2020-05-06T15:17:22+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/"},"wordCount":4719,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2","articleSection":["1\/2003","2003","Interaktiv","Internet","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/","url":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/","name":"Daten visualisieren mit HTML - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2","datePublished":"2020-05-06T15:17:22+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#primaryimage","url":"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2","contentUrl":"http:\/\/vg04.met.vgwort.de\/na\/ce4b2ca175974255b52ac594c765d1f2"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Daten_visualisieren_mit_HTML\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Daten visualisieren mit HTML"}]},{"@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\/55000093","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=55000093"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000093\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}