Den Tagesablauf können Sie prima mit Outlook verwalten: Es bietet übersichtliche Ansichten und komfortable Eingabemöglichkeiten für Termine. Vielleicht darf es aber auch etwas einfacher sein – oder Sie möchten schlicht und einfach Ihren Tagesablauf etwas anders planen als Outlook dies erlaubt. In diesem Fall ist dieser Beitrag genau das Richtige für Sie: Sie erfahren, wie Sie ein passendes Datenmodell aufsetzen und ein Formular zur Verwaltung des Tagesablaufs programmieren.
Aufbau der Anwendung
Der aiuTimeplanner besteht im Wesentlichen aus einem TreeView zur Verwaltung der Aufgaben und einem ListView-Steuerelement zum Hinzufügen der Aufgaben zu bestimmten Tageszeiten. Diese werden in 15-Minuten-Schritten verwaltet. Bild 1 zeigt, wie das Hauptformular der Anwendung aussieht.
Bild 1: Das Hauptformular zum Verwalten von Tagesabläufen
Was erledigen Sie nun mit dieser Anwendung In erster Linie können Sie damit Ihre Aufgaben in hierarchischer Form in einem TreeView-Steuerelement anlegen, verschieben oder löschen. Damit wissen Sie zumindest schon einmal, welche Aufgaben überhaupt vorliegen. Damit Sie überblicken, welche Aufgaben aktuell anstehen, gibt es ein ListView-Steuerelement zur Anzeige der heute zu erledigenden Aufgaben. Schließlich gibt es auf der rechten Seite des Formulars eine Tagesübersicht, die alle an diesem Tag durchgeführten Aufgaben enthält.
Die Tä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ätigkeiten ziehen – und zwar genau auf die Uhrzeit, zu der Sie die Tätigkeit durchgeführt haben.
Tätigkeiten nach Datum
Das Formular zeigt immer die Daten für den Tag an, der im Textfeld oben im Formular angegeben ist. Mit einem Klick auf die Schaltfläche Heute wechseln Sie zum heutigen Tag. Sie können das Datum auch manuell eingeben und die Eingabe mit der Eingabetaste abschließen. Oder, was noch einfacher ist: Sie verwenden die hinzugefügte Funktion zum Auswählen des Datums.
Dabei positionieren Sie die Einfügemarke genau auf dem Element, das Sie ändern möchten, und betätigen dann die Nach oben– oder Nach unten-Tasten. Wenn Sie also beispielsweise einen Tag weiterspringen möchten, fügen Sie die Einfügemarke ganz vorn ein und betätigen die Nach oben-Taste. Auf die gleiche Weise stellen Sie Monat und Jahr des anzuzeigenden Tages ein.
Aufgaben anlegen
Bevor Sie loslegen können, müssen Sie erstmal eine oder mehrere Aufgaben anlegen. Dazu gibt es nur eine einzige Möglichkeit: Sie klicken mit der rechten Maustaste auf den Eintrag im TreeView, unter dem Sie die neue Aufgabe anlegen mö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ählen Sie deren Kontextmenüeintrag Neue Aufgabe aus, um den Dialog zum Eingeben der Details der Aufgabe zu öffnen (s. Bild 2).
Bild 2: Öffnen des Dialogs zum Anlegen einer neuen Aufgabe
Im Dialog Neue Aufgabe tragen Sie den Namen der Aufgabe und weitere Informationen ein (s. Bild 3). Einzige Pflichtinformation ist hier die Kategorie, die allerdings auf <Keine Kategorie> voreingestellt ist. Die übrigen Informationen können direkt oder auch spä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öglichen weiteren Eigenschaften einer Aufgabe haben folgende Bedeutung:
Bild 3: Anlegen einer neuen Aufgabe
- Beschreibung: Dient nur informativen Zwecken und wird beispielsweise beim Überfahren eines Eintrags in der Liste der heutigen Aufgaben eingeblendet – allerdings nur in einer Zeile und mit begrenzter Zeichenzahl.
- Zu erledigen bis: Sofern bekannt, tragen Sie hier den geplanten Fertigstellungstermin ein. Wenn das hier angegebene Datum erreicht oder überschritten ist, wird die Aufgabe automatisch in der Liste der heutigen Aufgaben angezeigt.
- Erledigt am: Kann direkt in der Aufgaben-Detailansicht ausgefüllt werden. Ein Datum wird aber auch eingetragen, wenn Sie die Aufgabe in der Tagesübersicht oder im TreeView abhaken.
- Heute erledigen: 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.
- Standardaufgabe: Sie können beliebig viele Aufgaben festlegen, die in der Liste der Tätigkeiten direkt per Kontextmenü auswählbar sind – gleich mehr dazu. Diese Aufgaben werden außerdem im TreeView fett angezeigt.
- Ist Arbeitszeit: Dies dient nur zu Auswertungszwecken. Mithilfe dieser Eigenschaft können Sie festlegen, ob eine auf einer Aufgabe basierende Tätigkeit als Arbeitszeit gewertet werden soll oder nicht.
Heutige Aufgaben
Heutige Aufgaben werden folgendermaßen gekennzeichnet:
- Markierung durch Setzen der Option Heute erledigen in der Detailansicht einer Aufgabe. Ist diese Option gesetzt, wird die Aufgabe angezeigt, bis sie als erledigt gekennzeichnet wird.
- Markierung durch Einstellen des Feldes Zu erledigen bis auf einen Datumswert. Die Liste der heutigen Aufgaben zeigt eine Aufgabe an, wenn das Erledigungsdatum erreicht oder verstrichen ist.
Während Sie die Eigenschaft Zu erledigen bis nur in der Detailansicht einer Aufgabe einstellen kö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 Heute erledigen wird dadurch automatisch aktiviert.
Um einen Eintrag aus der Liste der heute zu erledigenden Aufgaben zu entfernen, öffnen Sie die Detailansicht per Doppelklick und deaktivieren die Option Heute erledigen.
Tätigkeiten verwalten
Schließlich gibt es ein weiteres Listenfeld, das die Tageszeiten in 15-Minuten-Schritten anzeigt und das Zuweisen der Aufgaben ermöglicht. Damit notieren Sie also, mit welchen Aufgaben Sie sich den Tag über beschäftigt haben. Dazu gibt es folgende Möglichkeiten:
- Sie ziehen eine Aufgabe aus der Liste der heutigen Aufgaben auf die Tagesansicht.
- Sie ziehen eine Aufgabe aus dem TreeView auf die Tagesansicht.
- Sie wählen eine Aufgabe per Kontextmenü aus. Dieses zeigt alle als Standardaufgaben gekennzeichneten Aufgaben in der Hierarchie wie im TreeView an.
Wie Letzteres funktioniert, zeigt Bild 4. Wenn Sie für eine Aufgabe die Einstellung Standardaufgabe aktiviert haben, wird diese im TreeView fett angezeigt. Außerdem stehen solche Aufgaben im Kontextmenü der Tätigkeitsliste zur Auswahl bereit. Sie können also schnell Tätigkeiten auf Basis solcher Aufgaben erstellen und brauchen diese nicht aus dem TreeView auszuwählen.
Bild 4: Auswählen einer Aufgabe aus der Liste der Standardaufgaben
In der Liste der Tätigkeiten eines Tages haben Sie weitere Möglichkeiten. Bestehende Tätigkeiten können Sie über die Einträge des Kontextmenüs überschreiben oder Sie wählen den Eintrag Tätigkeit löschen aus, um eine Tätigkeit zu löschen.
Außerdem können Sie die Einträge der Tätigkeitsliste per Drag and Drop verschieben. Und auch das Kopieren ist möglich: Wenn Sie also beispielsweise die Tätigkeit der vorherigen Viertelstunde auch für die aktuelle Viertelstunde eintragen möchten, ziehen Sie diese bei gedrückter Strg-Taste per Drag and Drop nach unten.
Zeit für eine neue Tätigkeit
Eine Anwendung zum Eintragen von Tätigkeiten ist nur die Hälfte wert, wenn Sie die Tätigkeiten nicht eintragen. Deshalb erinnert der aiuTimeplanner Sie jeweils nach Ablauf einer Viertelstunde per Meldungsfenster daran, die zuletzt erledigte Tätigkeit in die Tätigkeitsliste einzutragen.
Aufgaben als erledigt kennzeichnen
Tätigkeiten führen Sie durch, um Aufgaben abzuarbeiten. Damit Sie erledigte Aufgaben als erledigt markieren können, enthalten sowohl die Liste der heutigen Aufgaben als auch das TreeView-Steuerelement Kontrollkästchen zum Markieren der erledigten Aufgaben. Nach dem Abhaken bleiben diese Aufgaben zunächst noch sichtbar. Sie werden erst durch einen Mausklick auf die Schaltfläche Aktualisieren über dem jeweiligen Steuerelement ausgeblendet – oder eben beim nächsten Öffnen des Formulars.
Wenn Sie eine Aufgabe versehentlich als erledigt markiert haben, können Sie mit der entsprechenden Option alle erledigten Aufgaben einblenden und den Haken an den entsprechenden Aufgaben wieder entfernen.
Kategorien verwalten
Wie Sie bereits oben erfahren haben, können Sie für jede Aufgabe eine Kategorie festlegen. Damit soll sichergestellt werden, dass Sie später sowohl Auswertungen nach Aufgaben und Unteraufgaben als auch nach Kategorien durchführen können. Dabei kann eine übergeordnete Aufgabe mehrere Unteraufgaben zu einem Projekt zusammenfassen, sodass Sie etwa den Aufwand zu einem Projekt ermitteln können. Genauso sollen Sie ermitteln können, welche Zeit Sie mit den verschiedenen Tätigkeitsarten verbracht haben. Kategorien könnten also beispielsweise Kommunikation, Marketing, Programmierung oder Dokumentation sein. Die Kategorien verwalten Sie, indem Sie im Detailfenster einer Aufgabe auf die Schaltfläche mit den drei Punkten neben dem Auswahlfeld für die Kategorie klicken. Es erscheint der Dialog aus Bild 5, mit dem Sie die vorhandenen Kategorien verwalten oder neue hinzufügen können.
Bild 5: Verwalten von Kategorien
Datenmodell der Anwendung
Für die Darstellung von Tagesabläufen in Access ist es wichtig, eine entsprechende Rasterung zu definieren. Zwar kann es Tätigkeiten geben, die von 11:07 bis 11:13 erledigt werden, aber dies lässt sich optisch zumindest in Formularen nur schlecht abbilden. Also legen wir für diese Lösung ein Raster von 15 Minuten fest: Das ist genug Zeit zum Erledigen einer einfachen Aufgabe. Dauert eine Aufgabe länger, nimmt diese halt mehrere Blöcke à 15 Minuten in Anspruch, und kürzere Aufgaben fasst man einfach unter einem entsprechenden Titel sinnvoll zusammen. Zur Unterstützung für spätere Vorgänge (unter anderem fü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 mdlTools der Beispieldatenbank finden Sie zwei Prozeduren namens TimeplanDatenFuellen und TimeplanZeitenFuellen, mit denen Sie die Tabellen leicht mit Zeiten und Datumsangaben bestücken.
Bild 6: Tabellen zum Speichern von Zeiten und Datumsangaben
Die übrigen Tabellen zeigt das Datenmodell aus Bild 7. Die Tabelle tblAufgaben enthält im Wesentlichen die Felder, die der Dialog zur Eingabe der Aufgabendetails anzeigt. Es gibt nur ein weiteres Feld namens Aufgeklappt, das den entsprechenden Status des Elements für die Aufgabe im TreeView-Steuerelement speichert. Die Tabelle tblKategorien liefert die Werte für das Fremdschlüsselfeld KategorieID der Tabelle tblAufgaben.
Bild 7: Datenmodell des aiuTimeplanners
Die Hierarchie der Aufgaben, die ja auch im TreeView-Steuerelement abgebildet wird, wird in der Tabelle tblAufgabenUnteraufgaben gespeichert. Diese Tabelle enthält ein Primärschlüsselfeld sowie jeweils die Felder AufgabeID und UnteraufgabeID als Fremdschlüsselfelder zum Kombinieren von über- und untergeordneter Aufgabe.
Dabei ist wichtig, dass die Beziehung zwischen dem Feld UnteraufgabeID und dem Primärschlüsselfeld AufgabeID der Tabelle tblAufgaben als 1:1-Beziehung ausgelegt wird. Dies erreichen Sie, indem Sie das Feld UnteraufgabeID mit einem eindeutigen Index versehen.
Damit die Beziehung tatsächlich so funktioniert wie gewünscht, müssen Sie diese so wie in Bild 8 aufbauen. Dies erreichen Sie, indem Sie den Beziehungspfeil vom Feld AufgabeID der Tabelle tblAufgaben auf das Feld UnteraufgabeID der Tabelle tblAufgabenUnteraufgaben ziehen. Die Tätigkeiten werden in einer eigenen Tabelle namens tblTaetigkeiten gespeichert. Um die Beziehung zwischen einer Tätigkeit und der Aufgabe herzustellen, auf deren Basis die Tätigkeit erstellt wurde, enthält die Tabelle tblTaetigkeiten ein Fremdschlüsselfeld namens AufgabeID. Die Tabelle enthält außerdem folgende Felder:
Bild 8: Beziehung zwischen Aufgaben und Unteraufgaben
- TaetigkeitID: Primärschlüsselfeld der Tabelle
- Taetigkeitdatum: Datum der Tätigkeit
- Taetigkeitzeit: Zeit der Tätigkeit als Beginn des 15-Minuten-Blocks
- Bezeichnung: Bezeichnung, die standardmäßig mit dem Namen der zugrunde liegenden Aufgabe gefüllt wird
- Beschreibung: Wie Bezeichnung
- KategorieID: Bezug auf die Tabelle tblKategorien
- OutlookID: Nummer des Outlook-Elements, falls die Tätigkeit aus Outlook übernommen wurde
- AngelegtAm: Wird automatisch beim Anlegen gefüllt.
Die OutlookID können Sie verwenden, wenn Sie Termine aus Outlook in dieser Lösung berücksichtigen möchten. Wie der Import funktionieren kann, erfahren Sie im Beitrag Outlook-Termine importieren (www.access-im-unternehmen.de/828).
Programmierung der Anwendung
Die Anwendung enthält in der aktuellen Fassung allein im Klassenmodul des Formulars frmTagesablauf mehr als 700 Zeilen Code. Mehr, als wir in einem Beitrag beschreiben können – eine ausführliche Dokumentation würde wohl ein ganzes Heft füllen. Also picken wir uns ein paar interessante Features heraus. Dabei verweisen wir auf den Beitrag Aufgaben per TreeView verwalten (www.access-im-unternehmen.de/826), der beschreibt, wie das TreeView mit den Aufgaben gefüllt wird. Der Beitrag Drag and Drop mit TreeView und ListView (www.access-im-unternehmen.de/833) wiederum erläutert die Drag-and-Drop-Funktionalität der drei Hauptsteuerelemente des Formulars. Im Folgenden schauen wir uns speziell das ListView-Steuerelement zur Anzeige der Tätigkeiten an.
Vorbereitungen beim Öffnen des Formulars
Gleich in der Ereignisprozedur werden die Steuerelemente des Formulars gefüllt. Um per IntelliSense auf die drei ListView/TreeView-Steuerelemente zugreifen zu können, deklarieren wir zunächst einige Variablen:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo