{"id":55000830,"date":"2012-06-01T00:00:00","date_gmt":"2020-05-22T21:54:02","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=830"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Tagesablauf_verwalten_mit_dem_aiuTimeplanner","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/","title":{"rendered":"Tagesablauf verwalten mit dem aiuTimeplanner"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Den Tagesablauf k&ouml;nnen Sie prima mit Outlook verwalten: Es bietet &uuml;bersichtliche Ansichten und komfortable Eingabem&ouml;glichkeiten f&uuml;r Termine. Vielleicht darf es aber auch etwas einfacher sein &#8211; oder Sie m&ouml;chten schlicht und einfach Ihren Tagesablauf etwas anders planen als Outlook dies erlaubt. In diesem Fall ist dieser Beitrag genau das Richtige f&uuml;r Sie: Sie erfahren, wie Sie ein passendes Datenmodell aufsetzen und ein Formular zur Verwaltung des Tagesablaufs programmieren.<\/b><\/p>\n<p><b>Aufbau der Anwendung<\/b><\/p>\n<p>Der <b>aiuTimeplanner<\/b> besteht im Wesentlichen aus einem TreeView zur Verwaltung der Aufgaben und einem ListView-Steuerelement zum Hinzuf&uuml;gen der Aufgaben zu bestimmten Tageszeiten. Diese werden in 15-Minuten-Schritten verwaltet. Bild 1 zeigt, wie das Hauptformular der Anwendung aussieht.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Das Hauptformular zum Verwalten von Tagesabl&auml;ufen<\/span><\/b><\/p>\n<p>Was erledigen Sie nun mit dieser Anwendung In erster Linie k&ouml;nnen Sie damit Ihre Aufgaben in hierarchischer Form in einem TreeView-Steuerelement anlegen, verschieben oder l&ouml;schen. Damit wissen Sie zumindest schon einmal, welche Aufgaben &uuml;berhaupt vorliegen. Damit Sie &uuml;berblicken, welche Aufgaben aktuell anstehen, gibt es ein ListView-Steuerelement zur Anzeige der heute zu erledigenden Aufgaben. Schlie&szlig;lich gibt es auf der rechten Seite des Formulars eine Tages&uuml;bersicht, die alle an diesem Tag durchgef&uuml;hrten Aufgaben enth&auml;lt.<\/p>\n<p>Die T&auml;tigkeiten legen Sie dabei ganz einfach an, indem Sie diese aus der Liste der heute zu erledigenden Aufgaben oder aus dem TreeView mit allen Aufgaben in die Liste der T&auml;tigkeiten ziehen &#8211; und zwar genau auf die Uhrzeit, zu der Sie die T&auml;tigkeit durchgef&uuml;hrt haben.<\/p>\n<p><b>T&auml;tigkeiten nach Datum<\/b><\/p>\n<p>Das Formular zeigt immer die Daten f&uuml;r den Tag an, der im Textfeld oben im Formular angegeben ist. Mit einem Klick auf die Schaltfl&auml;che <b>Heute <\/b>wechseln Sie zum heutigen Tag. Sie k&ouml;nnen das Datum auch manuell eingeben und die Eingabe mit der Eingabetaste abschlie&szlig;en. Oder, was noch einfacher ist: Sie verwenden die hinzugef&uuml;gte Funktion zum Ausw&auml;hlen des Datums.<\/p>\n<p>Dabei positionieren Sie die Einf&uuml;gemarke genau auf dem Element, das Sie &auml;ndern m&ouml;chten, und bet&auml;tigen dann die <b>Nach oben<\/b>&#8211; oder <b>Nach unten<\/b>-Tasten. Wenn Sie also beispielsweise einen Tag weiterspringen m&ouml;chten, f&uuml;gen Sie die Einf&uuml;gemarke ganz vorn ein und bet&auml;tigen die <b>Nach oben<\/b>-Taste. Auf die gleiche Weise stellen Sie Monat und Jahr des anzuzeigenden Tages ein.<\/p>\n<p><b>Aufgaben anlegen<\/b><\/p>\n<p>Bevor Sie loslegen k&ouml;nnen, m&uuml;ssen Sie erstmal eine oder mehrere Aufgaben anlegen. Dazu gibt es nur eine einzige M&ouml;glichkeit: Sie klicken mit der rechten Maustaste auf den Eintrag im TreeView, unter dem Sie die neue Aufgabe anlegen m&ouml;chten. Und wenn dort noch gar keine Aufgaben vorliegen Keine Sorge: Es gibt eine Root-Aufgabe, die auch im komplett leeren Zustand im TreeView angezeigt wird. W&auml;hlen Sie deren Kontextmen&uuml;eintrag <b>Neue Aufgabe <\/b>aus, um den Dialog zum Eingeben der Details der Aufgabe zu &ouml;ffnen (s. Bild 2).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: &Ouml;ffnen des Dialogs zum <a id=\"anker-53-anchor\" name=\"anker-53-anchor\" \/>Anlegen einer neuen Aufgabe<\/span><\/b><\/p>\n<p>Im Dialog <b>Neue Aufgabe <\/b>tragen Sie den Namen der Aufgabe und weitere Informationen ein (s. Bild 3). Einzige Pflichtinformation ist hier die Kategorie, die allerdings auf <b>&lt;Keine Kategorie&gt; <\/b>voreingestellt ist. Die &uuml;brigen Informationen k&ouml;nnen direkt oder auch sp&auml;ter eingestellt werden. Dazu klicken Sie einfach doppelt auf die Aufgabe im TreeView-Steuerelement oder, sofern diese dort vorliegt, auf den Eintrag in der Liste der heute zu erledigenden Aufgaben. Die m&ouml;glichen weiteren Eigenschaften einer Aufgabe haben folgende Bedeutung:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Anlegen einer neuen Aufgabe<\/span><\/b><\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>Beschreibung<\/b>: Dient nur informativen Zwecken und wird beispielsweise beim &Uuml;berfahren eines Eintrags in der Liste der heutigen Aufgaben eingeblendet &#8211; allerdings nur in einer Zeile und mit begrenzter Zeichenzahl.<\/li>\n<li class=\"aufz-hlung\"><b>Zu erledigen bis<\/b>: Sofern bekannt, tragen Sie hier den geplanten Fertigstellungstermin ein. Wenn das hier angegebene Datum erreicht oder &uuml;berschritten ist, wird die Aufgabe automatisch in der Liste der heutigen Aufgaben angezeigt.<\/li>\n<li class=\"aufz-hlung\"><b>Erledigt am<\/b>: Kann direkt in der Aufgaben-Detailansicht ausgef&uuml;llt werden. Ein Datum wird aber auch eingetragen, wenn Sie die Aufgabe in der Tages&uuml;bersicht oder im TreeView abhaken.<\/li>\n<li class=\"aufz-hlung\"><b>Heute erledigen<\/b>: Legt fest, dass eine Aufgabe heute erledigt werden soll. Dies blendet die Aufgabe so lange in der Liste der heute zu erledigenden Aufgaben ein, bis diese als erledigt gekennzeichnet wird.<\/li>\n<li class=\"aufz-hlung\"><b>Standardaufgabe<\/b>: Sie k&ouml;nnen beliebig viele Aufgaben festlegen, die in der Liste der T&auml;tigkeiten direkt per Kontextmen&uuml; ausw&auml;hlbar sind &#8211; gleich mehr dazu. Diese Aufgaben werden au&szlig;erdem im TreeView fett angezeigt.<\/li>\n<li class=\"aufz-hlung\"><b>Ist Arbeitszeit<\/b>: Dies dient nur zu Auswertungszwecken. Mithilfe dieser Eigenschaft k&ouml;nnen Sie festlegen, ob eine auf einer Aufgabe basierende T&auml;tigkeit als Arbeitszeit gewertet werden soll oder nicht.<\/li>\n<\/ul>\n<p><b>Heutige Aufgaben<\/b><\/p>\n<p>Heutige Aufgaben werden folgenderma&szlig;en gekennzeichnet:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Markierung durch Setzen der Option <b>Heute erledigen<\/b> in der Detailansicht einer Aufgabe. Ist diese Option gesetzt, wird die Aufgabe angezeigt, bis sie als erledigt gekennzeichnet wird.<\/li>\n<li class=\"aufz-hlung\">Markierung durch Einstellen des Feldes <b>Zu erledigen bis<\/b> auf einen Datumswert. Die Liste der heutigen Aufgaben zeigt eine Aufgabe an, wenn das Erledigungsdatum erreicht oder verstrichen ist.<\/li>\n<\/ul>\n<p>W&auml;hrend Sie die Eigenschaft <b>Zu erledigen bis <\/b>nur in der Detailansicht einer Aufgabe einstellen k&ouml;nnen, machen Sie eine Aufgabe auf ganz einfache Weise zu einer heute zu erledigenden Aufgabe. Dazu ziehen Sie die entsprechende Aufgabe einfach aus dem TreeView in die Liste der heute zu erledigenden Aufgaben. Die Eigenschaft <b>Heute erledigen <\/b>wird dadurch automatisch aktiviert.<\/p>\n<p>Um einen Eintrag aus der Liste der heute zu erledigenden Aufgaben zu entfernen, &ouml;ffnen Sie die Detailansicht per Doppelklick und deaktivieren die Option <b>Heute erledigen<\/b>.<\/p>\n<p><b>T&auml;tigkeiten verwalten<\/b><\/p>\n<p>Schlie&szlig;lich gibt es ein weiteres Listenfeld, das die Tageszeiten in 15-Minuten-Schritten anzeigt und das Zuweisen der Aufgaben erm&ouml;glicht. Damit notieren Sie also, mit welchen Aufgaben Sie sich den Tag &uuml;ber besch&auml;ftigt haben. Dazu gibt es folgende M&ouml;glichkeiten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Sie ziehen eine Aufgabe aus der Liste der heutigen Aufgaben auf die Tagesansicht.<\/li>\n<li class=\"aufz-hlung\">Sie ziehen eine Aufgabe aus dem TreeView auf die Tagesansicht.<\/li>\n<li class=\"aufz-hlung\">Sie w&auml;hlen eine Aufgabe per Kontextmen&uuml; aus. Dieses zeigt alle als Standardaufgaben gekennzeichneten Aufgaben in der Hierarchie wie im TreeView an.<\/li>\n<\/ul>\n<p>Wie Letzteres funktioniert, zeigt Bild 4. Wenn Sie f&uuml;r eine Aufgabe die Einstellung <b>Standardaufgabe <\/b>aktiviert haben, wird diese im TreeView fett angezeigt. Au&szlig;erdem stehen solche Aufgaben im Kontextmen&uuml; der T&auml;tigkeitsliste zur Auswahl bereit. Sie k&ouml;nnen also schnell T&auml;tigkeiten auf Basis solcher Aufgaben erstellen und brauchen diese nicht aus dem TreeView auszuw&auml;hlen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Ausw&auml;hlen einer Aufgabe aus der Liste der Standardaufgaben<\/span><\/b><\/p>\n<p>In der Liste der T&auml;tigkeiten eines Tages haben Sie weitere M&ouml;glichkeiten. Bestehende T&auml;tigkeiten k&ouml;nnen Sie &uuml;ber die Eintr&auml;ge des Kontextmen&uuml;s &uuml;berschreiben oder Sie w&auml;hlen den Eintrag <b>T&auml;tigkeit l&ouml;schen <\/b>aus, um eine T&auml;tigkeit zu l&ouml;schen.<\/p>\n<p>Au&szlig;erdem k&ouml;nnen Sie die Eintr&auml;ge der T&auml;tigkeitsliste per Drag and Drop verschieben. Und auch das Kopieren ist m&ouml;glich: Wenn Sie also beispielsweise die T&auml;tigkeit der vorherigen Viertelstunde auch f&uuml;r die aktuelle Viertelstunde eintragen m&ouml;chten, ziehen Sie diese bei gedr&uuml;ckter <b>Strg<\/b>-Taste per Drag and Drop nach unten.<\/p>\n<p><b>Zeit f&uuml;r eine neue T&auml;tigkeit<\/b><\/p>\n<p>Eine Anwendung zum Eintragen von T&auml;tigkeiten ist nur die H&auml;lfte wert, wenn Sie die T&auml;tigkeiten nicht eintragen. Deshalb erinnert der <b>aiuTimeplanner <\/b>Sie jeweils nach Ablauf einer Viertelstunde per Meldungsfenster daran, die zuletzt erledigte T&auml;tigkeit in die T&auml;tigkeitsliste einzutragen.<\/p>\n<p><b>Aufgaben als erledigt kennzeichnen<\/b><\/p>\n<p>T&auml;tigkeiten f&uuml;hren Sie durch, um Aufgaben abzuarbeiten. Damit Sie erledigte Aufgaben als erledigt markieren k&ouml;nnen, enthalten sowohl die Liste der heutigen Aufgaben als auch das TreeView-Steuerelement Kontrollk&auml;stchen zum Markieren der erledigten Aufgaben. Nach dem Abhaken bleiben diese Aufgaben zun&auml;chst noch sichtbar. Sie werden erst durch einen Mausklick auf die Schaltfl&auml;che <b>Aktualisieren<\/b> &uuml;ber dem jeweiligen Steuerelement ausgeblendet &#8211; oder eben beim n&auml;chsten &Ouml;ffnen des Formulars.<\/p>\n<p>Wenn Sie eine Aufgabe versehentlich als erledigt markiert haben, k&ouml;nnen Sie mit der entsprechenden Option alle erledigten Aufgaben einblenden und den Haken an den entsprechenden Aufgaben wieder entfernen.<\/p>\n<p><b>Kategorien verwalten<\/b><\/p>\n<p>Wie Sie bereits oben erfahren haben, k&ouml;nnen Sie f&uuml;r jede Aufgabe eine Kategorie festlegen. Damit soll sichergestellt werden, dass Sie sp&auml;ter sowohl Auswertungen nach Aufgaben und Unteraufgaben als auch nach Kategorien durchf&uuml;hren k&ouml;nnen. Dabei kann eine &uuml;bergeordnete Aufgabe mehrere Unteraufgaben zu einem Projekt zusammenfassen, sodass Sie etwa den Aufwand zu einem Projekt ermitteln k&ouml;nnen. Genauso sollen Sie ermitteln k&ouml;nnen, welche Zeit Sie mit den verschiedenen T&auml;tigkeitsarten verbracht haben. Kategorien k&ouml;nnten also beispielsweise Kommunikation, Marketing, Programmierung oder Dokumentation sein. Die Kategorien verwalten Sie, indem Sie im Detailfenster einer Aufgabe auf die Schaltfl&auml;che mit den drei Punkten neben dem Auswahlfeld f&uuml;r die Kategorie klicken. Es erscheint der Dialog aus Bild 5, mit dem Sie die vorhandenen Kategorien verwalten oder neue hinzuf&uuml;gen k&ouml;nnen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Verwalten von Kategorien<\/span><\/b><\/p>\n<p><b>Datenmodell der Anwendung<\/b><\/p>\n<p>F&uuml;r die Darstellung von Tagesabl&auml;ufen in Access ist es wichtig, eine entsprechende Rasterung zu definieren. Zwar kann es T&auml;tigkeiten geben, die von 11:07 bis 11:13 erledigt werden, aber dies l&auml;sst sich optisch zumindest in Formularen nur schlecht abbilden. Also legen wir f&uuml;r diese L&ouml;sung ein Raster von 15 Minuten fest: Das ist genug Zeit zum Erledigen einer einfachen Aufgabe. Dauert eine Aufgabe l&auml;nger, nimmt diese halt mehrere Bl&ouml;cke &Atilde;  15 Minuten in Anspruch, und k&uuml;rzere Aufgaben fasst man einfach unter einem entsprechenden Titel sinnvoll zusammen. Zur Unterst&uuml;tzung f&uuml;r sp&auml;tere Vorg&auml;nge (unter anderem f&uuml;r die Darstellung) legen Sie zwei Tabellen an, welche die Zeiten in 15-Minuten-Schritten und die anstehenden Datumsangaben speichern (s. Bild 6). Im Modul <b>mdlTools <\/b>der Beispieldatenbank finden Sie zwei Prozeduren namens <b>TimeplanDatenFuellen <\/b>und <b>TimeplanZeitenFuellen<\/b>, mit denen Sie die Tabellen leicht mit Zeiten und Datumsangaben best&uuml;cken.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Tabellen zum Speichern von Zeiten und Datumsangaben<\/span><\/b><\/p>\n<p><!--30percent--><\/p>\n<p>Die &uuml;brigen Tabellen zeigt das Datenmodell aus Bild 7. Die Tabelle <b>tblAufgaben <\/b>enth&auml;lt im Wesentlichen die Felder, die der Dialog zur Eingabe der Aufgabendetails anzeigt. Es gibt nur ein weiteres Feld namens <b>Aufgeklappt<\/b>, das den entsprechenden <b>Status <\/b>des Elements f&uuml;r die Aufgabe im TreeView-Steuerelement speichert. Die Tabelle <b>tblKategorien <\/b>liefert die Werte f&uuml;r das Fremdschl&uuml;sselfeld <b>KategorieID <\/b>der Tabelle <b>tblAufgaben<\/b>.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic007.png\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Datenmodell des aiuTimeplanners<\/span><\/b><\/p>\n<p>Die Hierarchie der Aufgaben, die ja auch im TreeView-Steuerelement abgebildet wird, wird in der Tabelle <b>tblAufgabenUnteraufgaben <\/b>gespeichert. Diese Tabelle enth&auml;lt ein Prim&auml;rschl&uuml;sselfeld sowie jeweils die Felder <b>AufgabeID <\/b>und <b>UnteraufgabeID<\/b> als Fremdschl&uuml;sselfelder zum Kombinieren von &uuml;ber- und untergeordneter Aufgabe.<\/p>\n<p>Dabei ist wichtig, dass die Beziehung zwischen dem Feld <b>UnteraufgabeID <\/b>und dem Prim&auml;rschl&uuml;sselfeld <b>AufgabeID <\/b>der Tabelle <b>tblAufgaben <\/b>als 1:1-Beziehung ausgelegt wird. Dies erreichen Sie, indem Sie das Feld <b>UnteraufgabeID <\/b>mit einem eindeutigen Index versehen.<\/p>\n<p>Damit die Beziehung tats&auml;chlich so funktioniert wie gew&uuml;nscht, m&uuml;ssen Sie diese so wie in Bild 8 aufbauen. Dies erreichen Sie, indem Sie den Beziehungspfeil vom Feld <b>AufgabeID <\/b>der Tabelle <b>tblAufgaben <\/b>auf das Feld <b>UnteraufgabeID <\/b>der Tabelle <b>tblAufgabenUnteraufgaben <\/b>ziehen. Die T&auml;tigkeiten werden in einer eigenen Tabelle namens <b>tblTaetigkeiten <\/b>gespeichert. Um die Beziehung zwischen einer T&auml;tigkeit und der Aufgabe herzustellen, auf deren Basis die T&auml;tigkeit erstellt wurde, enth&auml;lt die Tabelle <b>tblTaetigkeiten <\/b>ein Fremdschl&uuml;sselfeld namens <b>AufgabeID<\/b>. Die Tabelle enth&auml;lt au&szlig;erdem folgende Felder:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Beziehung zwischen Aufgaben und Unteraufgaben<\/span><\/b><\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>TaetigkeitID<\/b>: Prim&auml;rschl&uuml;sselfeld der Tabelle<\/li>\n<li class=\"aufz-hlung\"><b>Taetigkeitdatum<\/b>: Datum der T&auml;tigkeit<\/li>\n<li class=\"aufz-hlung\"><b>Taetigkeitzeit<\/b>: Zeit der T&auml;tigkeit als Beginn des 15-Minuten-Blocks<\/li>\n<li class=\"aufz-hlung\"><b>Bezeichnung<\/b>: Bezeichnung, die standardm&auml;&szlig;ig mit dem Namen der zugrunde liegenden Aufgabe gef&uuml;llt wird<\/li>\n<li class=\"aufz-hlung\"><b>Beschreibung<\/b>: Wie Bezeichnung<\/li>\n<li class=\"aufz-hlung\"><b>KategorieID<\/b>: Bezug auf die Tabelle <b>tblKategorien<\/b><\/li>\n<li class=\"aufz-hlung\"><b>OutlookID<\/b>: Nummer des Outlook-Elements, falls die T&auml;tigkeit aus Outlook &uuml;bernommen wurde<\/li>\n<li class=\"aufz-hlung\"><b>AngelegtAm<\/b>: Wird automatisch beim Anlegen gef&uuml;llt.<\/li>\n<\/ul>\n<p>Die <b>OutlookID<\/b> k&ouml;nnen Sie verwenden, wenn Sie Termine aus Outlook in dieser L&ouml;sung ber&uuml;cksichtigen m&ouml;chten. Wie der Import funktionieren kann, erfahren Sie im Beitrag <b>Outlook-Termine importieren <\/b>(<b>www.access-im-unternehmen.de\/828<\/b>).<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Programmierung der Anwendung<\/p>\n<p>Die Anwendung enth&auml;lt in der aktuellen Fassung allein im Klassenmodul des Formulars <b>frmTagesablauf<\/b> mehr als 700 Zeilen Code. Mehr, als wir in einem Beitrag beschreiben k&ouml;nnen &#8211; eine ausf&uuml;hrliche Dokumentation w&uuml;rde wohl ein ganzes Heft f&uuml;llen. Also picken wir uns ein paar interessante Features heraus. Dabei verweisen wir auf den Beitrag <b>Aufgaben per TreeView verwalten <\/b>(<b>www.access-im-unternehmen.de\/826<\/b>), der beschreibt, wie das TreeView mit den Aufgaben gef&uuml;llt wird. Der Beitrag <b>Drag and Drop mit TreeView und ListView <\/b>(<b>www.access-im-unternehmen.de\/833<\/b>) wiederum erl&auml;utert die Drag-and-Drop-Funktionalit&auml;t der drei Hauptsteuerelemente des Formulars. Im Folgenden schauen wir uns speziell das ListView-Steuerelement zur Anzeige der T&auml;tigkeiten an.<\/p>\n<p><b>Vorbereitungen beim &Ouml;ffnen des Formulars<\/b><\/p>\n<p>Gleich in der Ereignisprozedur werden die Steuerelemente des Formulars gef&uuml;llt. Um per IntelliSense auf die drei ListView\/TreeView-Steuerelemente zugreifen zu k&ouml;nnen, deklarieren wir zun&auml;chst einige Variablen:<\/p>\n<pre>Dim WithEvents objTasks As MSComctlLib.TreeView\r\nDim WithEvents objDailyTasks As MSComctlLib.ListView\r\nDim WithEvents objTimeplan As MSComctlLib.ListView<\/pre>\n<p>Au&szlig;erdem ben&ouml;tigen wir eine Variable, um das Datumsfeld mit der Funktion zum &auml;ndern des Datums mit den Tasten <b>Nach oben <\/b>und <b>Nach unten <\/b>einzustellen:<\/p>\n<pre>Dim objDatebox As clsDatebox<\/pre>\n<p>Die Prozedur, die durch das Ereignis <b>Beim Laden <\/b>des Formulars ausgel&ouml;st wird, sorgt schlie&szlig;lich f&uuml;r das Initialisieren und F&uuml;llen der Steuerelemente sowie f&uuml;r das Einstellen des aktuellen Datums:<\/p>\n<pre>Private Sub Form_Load()\r\n    Set objDatebox = New clsDatebox\r\n    With objDatebox\r\n        Set .Datebox = Me!txtDatum\r\n    End With\r\n    Me!txtDatum = Date\r\n    ConfigureTreeView\r\n    ConfigureDailyTasks\r\n    ConfigureTimeplan\r\n    FillTree\r\n    FillDailyTasks\r\n    FillTimeplan\r\nEnd Sub<\/pre>\n<p>Die beiden Prozeduren <b>ConfigureTimeplan <\/b>und <b>FillTimeplan <\/b>schauen wir uns im Folgenden genauer an.<\/p>\n<p><b>Tagesablauf im Listenfeld darstellen<\/b><\/p>\n<p>Wie stellen wir die Datens&auml;tze der Tabelle <b>tblTaetigkeiten<\/b> in einem Listenfeld dar, wenn diese mit hoher Wahrscheinlichkeit gar nicht f&uuml;r jedes 15-Minuten-Element einen Datensatz enth&auml;lt Hier kommt die Tabelle <b>tblTimeplanZeiten <\/b>ins Spiel, die ja alle ben&ouml;tigten Uhrzeiten enth&auml;lt. Zun&auml;chst jedoch filtern wir aus der Tabelle <b>tblTaetigkeiten <\/b>alle Datens&auml;tze, die f&uuml;r den aktuell im Textfeld <b>txtDatum <\/b>angegebenen Tag angezeigt werden sollen. Dies erledigt die Abfrage <b>qryTaetigkeiten<\/b>, welche den Parameter <b>[prmTaetigkeitDatum] <\/b>enth&auml;lt und nur die vier Felder <b>TaetigkeitID<\/b>, <b>Taetigkeitsdatum<\/b>, <b>Taetigkeitszeit <\/b>und <b>Bezeichnung <\/b>liefert (s. Bild 9).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic009.png\" alt=\"pic009.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9: Abfrage aller T&auml;tigkeiten eines Tages<\/span><\/b><\/p>\n<p>Auf Basis dieser Abfrage erstellen wir eine neue Abfrage, welche die Tabelle <b>tblTimeplanZeiten <\/b>hinzuzieht. Das Feld <b>Taetigkeitzeit <\/b>wird dabei mit dem einzigen Feld der Tabelle <b>tblTimeplanZeiten <\/b>verkn&uuml;pft (s. Bild 10).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic010.png\" alt=\"pic010.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10: Zusammenf&uuml;hren der T&auml;tigkeiten den Uhrzeiten<\/span><\/b><\/p>\n<p>Diese Beziehung wird dabei so ausgelegt, dass alle Datens&auml;tze der Tabelle <b>tblTimeplanZeiten <\/b>enthalten sind und nur die vorhandenen Datens&auml;tze der Abfrage <b>qryTaetigkeiten<\/b> (s. Bild 11).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2012_03\/TagesablaufVerwalten-web-images\/pic011.png\" alt=\"pic011.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11: OUTER JOIN-Verkn&uuml;pfung<\/span><\/b><\/p>\n<p>Dementsprechend enth&auml;lt die Abfrage <b>qryTaetigkeitenZeiten <\/b>zwar die Felder <b>TaetigkeitID<\/b>, <b>Bezeichnung <\/b>und <b>Taetigkeitdatum <\/b>der Abfrage <b>qryTaetigkeiten <\/b>(und somit der Tabelle <b>tblTaetigkeiten<\/b>). Die Uhrzeit liefert jedoch das Feld <b>TimeplanZeit <\/b>der Tabelle <b>tblTimeplanZeiten<\/b>.<\/p>\n<p><b>T&auml;tigkeiten-ListView einstellen<\/b><\/p>\n<p>Bevor wir diesen Extrakt in das ListView-Steuerelement <b>lvwTimeplan <\/b>flie&szlig;en lassen k&ouml;nnen, soll dieses zun&auml;chst angepasst werden. In letzter Zeit haben wir gute Erfahrung mit dem codegesteuerten Einstellen der Eigenschaften von TreeView- und ListView-Steuerelementen gemacht, da sich die Einstellungen so leicht durch Kopieren der entsprechenden Codezeilen &uuml;bertragen lassen.<\/p>\n<p>F&uuml;r die drei ListView\/TreeView-Steuerelemente haben wir jeweils eine Konfigurationsprozedur angelegt. Die Prozedur f&uuml;r das Steuerelement <b>lvwTimeplan <\/b>sieht beispielsweise wie in <span class=\"verweis-ohneumbruch\"><a href=\"#anker-49-anchor\">Listing 1<\/a><\/span> aus.<\/p>\n<p class=\"listingueberschrift\">Listing 1: Konfigurieren des ListView-Steuerelements zur Anzeige der T&auml;tigkeiten<\/p>\n<pre>Private Sub ConfigureTimeplan()\r\n    Dim objColumnHeader As MSComctlLib.ColumnHeader\r\n    Set objTimeplan = Me!lvwTimeplan.Object\r\n    With objTimeplan\r\n        .ColumnHeaders.Clear\r\n        .Appearance = ccFlat\r\n        .BorderStyle = ccNone\r\n        .View = lvwReport\r\n        .FullRowSelect = True\r\n        .OLEDragMode = ccOLEDragAutomatic\r\n        .OLEDropMode = ccOLEDropManual\r\n        .Font.Name = &quot;Calibri&quot;\r\n        .Font.Size = 9\r\n        .MultiSelect = True\r\n        .LabelEdit = lvwManual\r\n        .FlatScrollBar = True\r\n    End With\r\n    Set objColumnHeader = objTimeplan.ColumnHeaders.Add\r\n    objColumnHeader.Text = &quot;Uhrzeit:&quot;\r\n    objColumnHeader.Width = 900\r\n    Set objColumnHeader = objTimeplan.ColumnHeaders.Add\r\n    objColumnHeader.Text = &quot;Aufgabe:&quot;\r\n    objColumnHeader.Width = Me!lvwTimeplan.Width - 910\r\nEnd Sub<\/pre>\n<p>Die Prozedur f&uuml;llt zun&auml;chst die Objektvariable <b>objTimeplan <\/b>mit einem Verweis auf das entsprechende Steuerelement. Innerhalb des <b>With<\/b>-Konstrukts werden dann die Standardeigenschaften eingestellt, die &uuml;brigen Zeilen legen die Spalten&uuml;berschriften und Spaltenbreiten fest.<\/p>\n<p>Das F&uuml;llen auf Basis der Abfrage <b>qryTaetigkeitenZeiten <\/b>erfolgt in der Prozedur <b>FillTimeplan<\/b> (s. <span class=\"verweis-ohneumbruch\"><a href=\"#anker-65-anchor\">Listing 2<\/a><\/span>). Die Prozedur erstellt zun&auml;chst ein <b>QueryDef<\/b>-Objekt auf Basis der genannten Abfrage und f&uuml;gt das Datum aus dem Textfeld <b>txtDatum <\/b>als Wert f&uuml;r den Parameter <b>prmTaetigkeitDatum <\/b>hinzu. Danach &ouml;ffnet sie eine neue Datensatzgruppe auf Basis der so ausgestatteten Abfrage.<\/p>\n<p class=\"listingueberschrift\">Listing 2: F&uuml;llen des Timeplans<\/p>\n<pre>Private Sub FillTimeplan()\r\n    Dim db As DAO.Database\r\n    Dim qdf As DAO.QueryDef\r\n    Dim rst As DAO.Recordset\r\n    Dim objListitem As MSComctlLib.ListItem\r\n    Dim objListSubItem As MSComctlLib.ListSubItem\r\n    Dim datVon As Date\r\n    Dim datBis As Date\r\n    Dim i As Integer\r\n    Set db = CurrentDb\r\n    Set qdf = db.QueryDefs(&quot;qryTaetigkeitenZeiten&quot;)\r\n    qdf.Parameters(&quot;prmTaetigkeitDatum&quot;).Value = Me!txtDatum\r\n    Set rst = qdf.OpenRecordset()\r\n    datVon = DLookup(&quot;ZeitanzeigeVon&quot;, &quot;tblOptionen&quot;)\r\n    datBis = DLookup(&quot;ZeitanzeigeBis&quot;, &quot;tblOptionen&quot;)\r\n    rst.Filter = &quot;TimePlanZeit &gt;= &quot; &amp; ISODatum(datVon) &amp; &quot; AND TimePlanZeit &lt;= &quot; &amp; ISODatum(datBis)\r\n    Set rst = rst.OpenRecordset\r\n    objTimeplan.ListItems.Clear\r\n    Do While Not rst.EOF\r\n        i = i + 1\r\n        Set objListitem = objTimeplan.ListItems.Add(, &quot;p&quot; &amp; i, Format(rst!TimeplanZeit, &quot;hh:nn&quot;))\r\n        objListitem.Tag = Nz(rst!TaetigkeitID)\r\n        Set objListSubItem = objListitem.ListSubItems.Add\r\n        objListSubItem.Text = Nz(rst!Bezeichnung)\r\n        rst.MoveNext\r\n    Loop\r\n    AktuelleZeitMarkieren\r\n    objTimeplan.SelectedItem.Selected = False\r\n    objTimeplan.SelectedItem = Nothing\r\nEnd Sub<\/pre>\n<p>Damit der Benutzer die angezeigten Zeiten an seine Bed&uuml;rfnisse anpassen kann, gibt es eine Tabelle namens <b>tblOptionen<\/b>, welche die entsprechenden Einstellungen speichert. Die Daten der Tabelle <b>tblOptionen <\/b>werden im Dialog <b>frmOptionen <\/b>eingestellt, der sich vom Hauptformular aus &ouml;ffnen l&auml;sst. Zwei dieser Optionen hei&szlig;en <b>ZeitanzeigeVon <\/b>und <b>ZeitanzeigeBis<\/b>.<\/p>\n<p>Diese liest die Prozedur <b>FillTimeplan <\/b>aus und filtert das Recordset nach diesen Daten. Das auf Basis dieser gefilterten Daten neu erstellte Recordset liefert schlie&szlig;lich die zum F&uuml;llen des ListView-Steuerelements verwendeten Daten.<\/p>\n<p>Das Steuerelement wird zun&auml;chst mit der <b>Clear<\/b>-Methode der <b>ListItems<\/b>-Auflistung des Objekts <b>objTimeplan <\/b>gel&ouml;scht. Danach durchl&auml;uft eine <b>Do While<\/b>-Schleife alle Datens&auml;tze der Datensatzgruppe mit den mit T&auml;tigkeiten gef&uuml;llten und den leeren Zeitangaben. Innerhalb dieser Schleife wird eine Z&auml;hlervariable namens <b>i <\/b>jeweils um <b>1 <\/b>erh&ouml;ht. Diese dient dazu, die Listenelemente mit den Keys <b>p1<\/b>, <b>p2 <\/b>und so weiter zu versehen. Den Elementen wird au&szlig;erdem als Text die Uhrzeit zugewiesen. Fehlt noch die zweite Spalte f&uuml;r die Zeiten, f&uuml;r die eine T&auml;tigkeit vorliegt. Diese wird zun&auml;chst angelegt und mit der entsprechenden Zeit als Text versehen.<\/p>\n<p>Au&szlig;erdem f&uuml;llt die Prozedur die <b>Tag<\/b>-Eigenschaft mit dem Prim&auml;rschl&uuml;sselwert der T&auml;tigkeit in der Tabelle <b>tblTaetigkeiten<\/b>. Dies ist n&ouml;tig, damit etwa beim L&ouml;schen oder Verschieben der entsprechende Eintrag der Tabelle <b>tblTaetigkeiten <\/b>ausfindig gemacht werden kann.<\/p>\n<p>Sollte der aktuelle Datensatz keine T&auml;tigkeit enthalten, wird eine leere Zeichenkette eingetragen. Gleiches gilt f&uuml;r die Bezeichnung der T&auml;tigkeit, die als Text der zweiten Spalte des ListView-Steuerelements eingetragen wird. Nachdem alle Elemente hinzugef&uuml;gt wurden, ruft die Prozedur eine weitere Routine namens <b>AktuelleZeitMarkieren<\/b> auf. Diese markiert den aktuellen Zeitabschnitt fett, damit man direkt erkennt, welche T&auml;tigkeit die aktuelle T&auml;tigkeit ist. Zu guter Letzt hebt die Prozedur s&auml;mtliche Markierungen auf.<\/p>\n<p><b>Aktuellen Zeitraum markieren<\/b><\/p>\n<p>Die Prozedur <b>AktuelleZeitMarkieren<\/b> aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-66-anchor\">Listing 3<\/a><\/span> durchl&auml;uft alle Eintr&auml;ge des Listenfeldes <b>lvwTimeplan<\/b>. Dabei pr&uuml;ft sie, ob sich die aktuelle Zeit innerhalb des durch den T&auml;tigkeits-Eintrags abgedeckten 15-Minuten-Zeitraums befindet. Ist dies der Fall, wird der Eintrag fett markiert, sonst nicht.<\/p>\n<p class=\"listingueberschrift\">Listing 3: Aktuelle Zeit markieren<\/p>\n<pre>Private Sub AktuelleZeitMarkieren()\r\n    Dim objListitem As MSComctlLib.ListItem\r\n    If objTimeplan Is Nothing Then\r\n        Set objTimeplan = Me!lvwTimeplan.Object\r\n    End If\r\n    For Each objListitem In objTimeplan.ListItems\r\n        If Time() &gt;= CDate(objListitem.Text) And Time() &lt; CDate(objListitem.Text) + 1 \/ 96 Then\r\n            objListitem.Bold = True\r\n            objListitem.ListSubItems(1).Bold = True\r\n        Else\r\n            objListitem.Bold = False\r\n            objListitem.ListSubItems(1).Bold = False\r\n        End If\r\n    Next objListitem\r\nEnd Sub<\/pre>\n<p><b>Erinnerungsfunktion<\/b><\/p>\n<p>Ein wichtiger Bestandteil ist die Erinnerungsfunktion, die durch den Formular-Timer ausgel&ouml;st wird und die Prozedur aus <span class=\"verweis-ohneumbruch\"><a href=\"#anker-67-anchor\">Listing 4<\/a><\/span> startet. Die Prozedur pr&uuml;ft, ob beim Teilen der Minuten der aktuellen Uhrzeit durch 15 ein Rest bleibt, was bedeutet, dass eine Viertelstunde abgelaufen ist.<\/p>\n<p class=\"listingueberschrift\">Listing 4: Alle 15 Minuten Alarm schlagen, wenn keine T&auml;tigkeit eingetragen ist<\/p>\n<pre>Private Sub Remember()\r\n    If Format(Time, &quot;nn&quot;) Mod 15 = 0 Then\r\n        If IsNull(DLookup(&quot;TaetigkeitID&quot;, &quot;tblTaetigkeiten&quot;, &quot;Taetigkeitdatum = &quot; &amp; ISODatum(Date) _\r\n                &amp; &quot; AND TaetigkeitZeit = &quot; &amp; ISODatum(DateAdd(&quot;n&quot;, &quot;-15&quot;, Format(Time, &quot;hh:nn&quot;))))) Then\r\n            If DLookup(&quot;AkustischerAlarm&quot;, &quot;tblOptionen&quot;) = True Then\r\n                PlayTheSound &quot;notify&quot;\r\n            End If\r\n            If DLookup(&quot;OptischerAlarm&quot;, &quot;tblOptionen&quot;) = True Then\r\n                DoCmd.OpenForm &quot;frmZeitAbgelaufen&quot;, WindowMode:=acDialog\r\n            End If\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p>Ist dies der Fall, pr&uuml;ft ein Aufruf von <b>DLookup<\/b>, ob zur abgelaufenen Viertelstunde bereits eine T&auml;tigkeit angelegt wurde. Falls nicht, k&ouml;nnen zwei Aktionen ausgef&uuml;hrt werden: das Abspielen eines Sounds und das Anzeigen eines Meldungsfensters.<\/p>\n<p>Welche Aktion durchgef&uuml;hrt wird, h&auml;ngt von den Optionen ab, die der Benutzer gew&auml;hlt hat &#8211; er kann beide, eine von beiden oder gar keine Aktion festlegen. Sinnvoll ist es jedoch schon, sich erinnern zu lassen, denn so kann man zeitnah die jeweiligen T&auml;tigkeiten eintragen und vergisst nicht, was man in den vergangenen Stunden alles erledigt hat.<\/p>\n<p><b>T&auml;gliche Aufgaben anzeigen<\/b><\/p>\n<p>Ein wichtiges Feature der Anwendung ist das ListView-Steuerelement zur Anzeige der T&auml;tigkeiten, die heute durchgef&uuml;hrt werden sollen. Zu Beginn mag das TreeView-Steuerelement ausreichen und den &Uuml;berblick &uuml;ber alle T&auml;tigkeiten gew&auml;hrleisten, aber wenn Sie erstmal einige Aufgaben angelegt haben, verliert man schnell die &Uuml;bersicht. Da ist es hilfreich, wenn einige durch den Benutzer nach verschiedenen Kriterien festgelegte Aufgaben in einer eigenen Liste angezeigt und abgearbeitet werden k&ouml;nnen.<\/p>\n<p>Wie bereits erw&auml;hnt, gibt es zwei m&ouml;gliche Kriterien, damit eine Aufgabe in dieser Liste landet:<\/p>\n<ul>\n<li class=\"aufz-hlung\">die Eigenschaft <b>HeuteErledigen <\/b>ist auf <b>True <\/b>eingestellt oder<\/li>\n<li class=\"aufz-hlung\">die Eigenschaft <b>ZuErledigenBis <\/b>enth&auml;lt ein Datum, das kleiner oder gleich dem im Feld <b>txtDatum <\/b>angezeigten Datum ist.<\/li>\n<\/ul>\n<p>Die Prozedur <b>FillDailyTasks <\/b>f&uuml;llt das ListView-Steuerelement <b>objDailyTasks <\/b>und ber&uuml;cksichtigt dabei diese beiden Kriterien (s. <span class=\"verweis-ohneumbruch\"><a href=\"#anker-68-anchor\">Listing 5<\/a><\/span>). Hinzu kommt ein wichtiges weiteres Kriterium, das Sie mit dem Kontrollk&auml;stchen <b>chkErledigteAufgabenAnzeigen <\/b>festlegen. Ist dieses Kontrollk&auml;stchen angehakt, sollen auch alle Eintr&auml;ge der Tabelle <b>tblAufgaben <\/b>angezeigt werden, deren Erledigungsdatum bereits gef&uuml;llt ist und die somit bereits erledigt sind.<\/p>\n<p class=\"listingueberschrift\">Listing 5: Alle 15 Minuten Alarm schlagen, wenn keine T&auml;tigkeit eingetragen ist<\/p>\n<pre>Private Sub FillDailyTasks()\r\n    Dim db As DAO.Database\r\n    Dim rst As DAO.Recordset\r\n    Dim strErledigt As String\r\n    Set db = CurrentDb\r\n    If Me!chkErledigteAufgabenAnzeigen = False Then\r\n        strErledigt = &quot; AND ErledigtAm IS NULL&quot;\r\n    End If\r\n    If Me!txtDatum &gt; Date Then\r\n        Set rst = db.OpenRecordset(&quot;SELECT * FROM tblAufgaben WHERE ZuErledigenBis = &quot; _\r\n            &amp; ISODatum(Me!txtDatum) &amp; strErledigt &amp; &quot; ORDER BY ZuErledigenBis&quot;, dbOpenDynaset)\r\n    Else\r\n        Set rst = db.OpenRecordset(&quot;SELECT * FROM tblAufgaben WHERE (HeuteErledigen = TRUE OR\r\n            ZuErledigenBis &lt;= &quot; &amp; ISODatum(Me!txtDatum) &amp; &quot;)&quot; &amp; strErledigt\r\n            &amp; &quot; ORDER BY ZuErledigenBis&quot;, dbOpenDynaset)\r\n    End If\r\n    objDailyTasks.ListItems.Clear\r\n    With rst\r\n        Do While Not .EOF\r\n            AddDailyTask !AufgabeID, !Aufgabe, Nz(!ZuErledigenBis), Not IsNull(!ErledigtAm), _\r\n                Nz(!Beschreibung)\r\n            .MoveNext\r\n        Loop\r\n    End With\r\nEnd Sub<\/pre>\n<p>Da der entsprechende SQL-Ausdruck ohne ein Kriterium alle Datens&auml;tze liefert, also auch die erledigten Aufgaben, wird nur f&uuml;r den Fall, dass diese Option den Wert <b>False <\/b>enth&auml;lt, ein Zusatzkriterium definiert, n&auml;mlich <b>AND ErledigtAm IS NULL<\/b>. Danach werden zwei m&ouml;gliche F&auml;lle unterschieden: Entweder das Textfeld <b>txtDatum <\/b>zeigt einen Wert gr&ouml;&szlig;er als das aktuelle Datum an oder nicht.<\/p>\n<p>Zeigt der Benutzer also einen zuk&uuml;nftigen Tag an, sollen nur solche Aufgaben angezeigt werden, die genau an diesem Tag zu erledigen sind oder die am heutigen Tag erledigt werden sollen.<\/p>\n<p>F&uuml;r das aktuelle Datum oder einen Zeitpunkt in der Vergangenheit sollen alle Aufgaben angezeigt werden, die heute erledigt werden sollen oder deren Erledigungsdatum in der Vergangenheit liegt oder auf das angezeigte Datum f&auml;llt.<\/p>\n<p>Nach der Definition der richtigen Datenherkunft f&uuml;r das Listenfeld durchl&auml;uft die Prozedur die Datens&auml;tze in einer <b>Do While<\/b>-Schleife und ruft f&uuml;r jeden Datensatz die Prozedur <b>AddDailyTask<\/b> auf. Diese wiederum f&uuml;gt auf Basis der &uuml;bermittelten Parameterwerte je einen Listeneintrag zum ListView-Steuerelement <b>lvwDailyTasks <\/b>hinzu.<\/p>\n<p><b>Anzeigen von Aufgaben-Details<\/b><\/p>\n<p>Die Details einer Aufgabe k&ouml;nnen Sie nicht nur bearbeiten, wenn Sie die Aufgabe anlegen, sondern auch noch sp&auml;ter.<\/p>\n<p>Dazu klicken Sie einfach doppelt auf den entsprechenden Eintrag in der Liste der Tagesaufgaben oder im TreeView. Die dadurch ausgel&ouml;sten <b>DblClick<\/b>-Prozeduren &ouml;ffnen die Aufgabe, erlauben deren Bearbeitung und aktualisieren die Anzeige nach dem Schlie&szlig;en des Detailformulars wieder.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Die Erfassung der Aufgaben und T&auml;tigkeiten ist die Grundlage f&uuml;r die Auswertung von Arbeitszeiten auf Basis verschiedener Kriterien. Sie k&ouml;nnen dazu einerseits die Kategorien heranziehen und ermitteln, wie viel Zeit f&uuml;r eine bestimmte Art von Aufgaben verwendet wurde.<\/p>\n<p>Oder Sie betrachten den Aufwand f&uuml;r einzelne, durch Aufgaben abgebildete Projekte und deren Unteraufgaben. Und schlie&szlig;lich k&ouml;nnen Sie sich schlicht und einfach ansehen, wie viel Zeit Sie pro Tag, Woche, Monat oder Jahr gearbeitet haben, zu welchen Zeiten Sie im B&uuml;ro sind et cetera.<\/p>\n<p>Ich habe mir beispielsweise angew&ouml;hnt, die komplette im B&uuml;ro verbrachte Zeit zu notieren, egal ob ich diese mit einer produktiven T&auml;tigkeit oder mit sonstigen T&auml;tigkeiten (etwa private E-Mails lesen, surfen oder telefonieren) zugebracht habe. Letztere wurden schlicht mit der T&auml;tigkeit <b>Pause <\/b>vermerkt.<\/p>\n<p>Weitere Beitr&auml;ge liefern mehr Details zu der hier vorgestellten L&ouml;sung. Der Beitrag <b>Drag and Drop mit TreeView und ListView <\/b>(<b>www.access-im-unternehmen.de\/833<\/b>) etwa zeigt, wie die Drag-and-Drop-Vorg&auml;nge dieser L&ouml;sung programmiert wurden.<\/p>\n<p>Der Beitrag <b>Aufgaben per TreeView verwalten <\/b>(<b>www.access-im-unternehmen.de\/826<\/b>) zeigt, wie das TreeView mit hierarchischen Aufgaben gef&uuml;llt wird und wie Sie diese mit dem Kontextmen&uuml; anlegen oder l&ouml;schen. Und wenn Sie Termine aus Outlook in die T&auml;tigkeiten-Liste integrieren m&ouml;chten, bietet der Beitrag <b>Outlook-Termine importieren <\/b>(<b>www.access-im-unternehmen.de\/828<\/b>) die notwendigen Grundlagen.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>TagesablaufVerwalten.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{EBD14900-A38B-411D-8F52-4F2D6257201D}\/aiu_830.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Den Tagesablauf k&ouml;nnen Sie prima mit Outlook verwalten: Es bietet &uuml;bersichtliche Ansichten und komfortable Eingabem&ouml;glichkeiten f&uuml;r Termine. Vielleicht darf es aber auch etwas einfacher sein &#8211; oder Sie m&ouml;chten schlicht und einfach Ihren Tagesablauf etwas anders planen als Outlook dies erlaubt. In diesem Fall ist dieser Beitrag genau das Richtige f&uuml;r Sie: Sie erfahren, wie Sie ein passendes Datenmodell aufsetzen und ein Formular zur Verwaltung des Tagesablaufs programmieren.<\/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":[662012,66032012,44000027],"tags":[],"class_list":["post-55000830","post","type-post","status-publish","format-standard","hentry","category-662012","category-66032012","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>Tagesablauf verwalten mit dem aiuTimeplanner - 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\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tagesablauf verwalten mit dem aiuTimeplanner\" \/>\n<meta property=\"og:description\" content=\"Den Tagesablauf k&ouml;nnen Sie prima mit Outlook verwalten: Es bietet &uuml;bersichtliche Ansichten und komfortable Eingabem&ouml;glichkeiten f&uuml;r Termine. Vielleicht darf es aber auch etwas einfacher sein - oder Sie m&ouml;chten schlicht und einfach Ihren Tagesablauf etwas anders planen als Outlook dies erlaubt. In diesem Fall ist dieser Beitrag genau das Richtige f&uuml;r Sie: Sie erfahren, wie Sie ein passendes Datenmodell aufsetzen und ein Formular zur Verwaltung des Tagesablaufs programmieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:54:02+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb\" \/>\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=\"23\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Tagesablauf verwalten mit dem aiuTimeplanner\",\"datePublished\":\"2020-05-22T21:54:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/\"},\"wordCount\":4049,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/af678c4352614af7bc44420134de13bb\",\"articleSection\":[\"2012\",\"3\\\/2012\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/\",\"name\":\"Tagesablauf verwalten mit dem aiuTimeplanner - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/af678c4352614af7bc44420134de13bb\",\"datePublished\":\"2020-05-22T21:54:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/af678c4352614af7bc44420134de13bb\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/af678c4352614af7bc44420134de13bb\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tagesablauf verwalten mit dem aiuTimeplanner\"}]},{\"@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":"Tagesablauf verwalten mit dem aiuTimeplanner - 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\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/","og_locale":"de_DE","og_type":"article","og_title":"Tagesablauf verwalten mit dem aiuTimeplanner","og_description":"Den Tagesablauf k&ouml;nnen Sie prima mit Outlook verwalten: Es bietet &uuml;bersichtliche Ansichten und komfortable Eingabem&ouml;glichkeiten f&uuml;r Termine. Vielleicht darf es aber auch etwas einfacher sein - oder Sie m&ouml;chten schlicht und einfach Ihren Tagesablauf etwas anders planen als Outlook dies erlaubt. In diesem Fall ist dieser Beitrag genau das Richtige f&uuml;r Sie: Sie erfahren, wie Sie ein passendes Datenmodell aufsetzen und ein Formular zur Verwaltung des Tagesablaufs programmieren.","og_url":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:54:02+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"23\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Tagesablauf verwalten mit dem aiuTimeplanner","datePublished":"2020-05-22T21:54:02+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/"},"wordCount":4049,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb","articleSection":["2012","3\/2012","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/","url":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/","name":"Tagesablauf verwalten mit dem aiuTimeplanner - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb","datePublished":"2020-05-22T21:54:02+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/af678c4352614af7bc44420134de13bb"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Tagesablauf_verwalten_mit_dem_aiuTimeplanner\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Tagesablauf verwalten mit dem aiuTimeplanner"}]},{"@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\/55000830","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=55000830"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000830\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000830"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000830"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}