Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erweitern Sie Outlook zum Frontend für das Verwalten von Projekten, Aufgaben und Tätigkeiten.

Techniken

Outlook, VBA, benutzerdefinierte Ereignisse

Voraussetzungen

Access 2000 und höher, Outlook 2007

Beispieldateien

Projektzeiterfassung.zip

Shortlink

532

Outlook 2007 als Projektzeiterfassungs-Frontend

André Minhorst, Duisburg

Die Projektzeiterfassung leidet meist darunter, dass man seinen Pflichten nicht nachkommt und seine Zeiten nicht pflegt. Das ist auch verständlich: Heutzutage muss sich der Anwender mit immer mehr Tools herumschlagen und ist beinahe mehr mit der Dokumentation seines Tuns als mit seiner Arbeit beschäftigt. Da wäre es doch schön, wenn man zwei Fliegen mit einer Klappe schlagen könnte - etwa, indem man die in Outlook eingetragenen Termine und mehr direkt in die Projektzeiterfassung überträgt.

Outlook bietet grundsätzlich nicht alles, was eine Projektzeiterfassung ausmacht: So kann man dort eigentlich keine Projekte festlegen und auch keine Tätigkeiten mit Aufgaben verknüpfen. Diese drei Elemente machen nämlich i,m Kontext dieses Beitrags die Erfassung von Projektzeiten aus: Zu einem Projekt gibt es mehrere Aufgaben und jede Aufgabe kann mit einer oder mehreren Tätigkeiten erledigt werden. Na gut, unter Outlook gibt es immerhin das Aufgaben-Element. Aber was ist mit Projekten und Tätigkeiten? Wie bildet man diese nach und vor allem: Wie verknüpfen Sie diese miteinander?

Kümmern wir uns zunächst um die Projekte. In einer Anwendung wie Outlook haben Projektinformationen eigentlich nichts zu suchen und auch der allgemeine Mitarbeiter braucht nur zu wissen, welche Aufgaben in Zusammenhang mit einem Projekt anfallen. Also reicht eine Möglichkeit aus, Projekte in irgendeiner Form aufzulisten und diesen Aufgaben zuzuweisen - denn die sind ja, wie oben besprochen, als einziges Element standardmäßig schon in Outlook vorhanden. Zu einem Projekt gehören mehrere Aufgaben. Welcher Analogieschluss lässt sich daraus für die Elemente von Outlook ziehen? Aufgaben sind im Aufgabenordner enthalten. Ein Aufgabenordner kann aber, wie auch Mail- oder Kontaktordner, einen oder mehrere, auch hierarchisch verschachtelte Unterordner besitzen. Damit wäre das Projekte-Problem gelöst: Sie legen einfach im Aufgabenordner einen Unterordner namens Projekte an und in diesem für jedes Projekt einen weiteren Ordner.

Das sieht dann in der Ordnerliste von Outlook, die sich für solche Ansichten am besten eignet, etwa wie in Abb. 1 aus. Diese Ansicht erhalten Sie über Ansicht|Navigationsbereich|Normal und anschließendes Anklicken des Eintrags Ordnerliste.

pic001.tif

Abb. 1: Projektordner und darin enthaltene Aufgaben

Hat man einmal ein paar Projektordner angelegt, kann man direkt die passenden Aufgaben - natürlich inklusive geplantem Fertigstellungsdatum - dort ablegen. Projekte, Aufgaben ... fehlen noch die Tätigkeiten. Eine Tätigkeit ist ein Element, das durch die Beschreibung der Tätigkeit selbst sowie weitere Informationen, vornehmlich Start- und der Endzeit, gekennzeichnet ist. Richtig - die Beschreibung passt genau auf einen Outlook-Termin. Im Betreff legen Sie eine Überschrift fest, in der Beschreibung gegebenenfalls weitere Informationen, und zwei weitere Felder dienen zum Eingeben des Start- und des Endzeitpunkts, aus denen man letztlich die Dauer ermittelt.

Das einzige Problem ist, dass sich ein Termin nicht so leicht einer Aufgabe zuordnen lässt wie eine Aufgabe einem Projektordner. Die Lösung dieses Problems betrachten wir jedoch weiter unten. Bis dahin sei zumindest verraten, wie der Benutzer Termine beziehungsweise Tätigkeiten anlegen kann, die mit einer bestimmten Aufgabe verknüpft sind: Er wechselt dazu von der in Abb. 1 gezeigten Ansicht mit einem Klick auf die Schaltfläche Kalender des Navigationsbereichs und aktiviert dann mit Ansicht|Aufgabenleiste|Normal die Aufgabenleiste. Diese zeigt je nach Einstellung beispielsweise die demnächst fertig zu stellenden Aufgaben an, was in diesem Fall Voraussetzung ist (s. Abb. 2): Eine solche Aufgabe lässt sich nämlich per Drag & Drop mit der Maus auf den Zeitplan des aktuellen Tages ziehen und übernimmt einige Eigenschaften in Textform in die Terminbeschreibung (s. Abb. 3). Der Termin hat nun einen oberflächlichen Bezug, aber keine wirkliche Beziehung zu der Aufgabe, aus der er entstanden ist.

pic002.tif

Abb. 2:
Neue Tätigkeiten legen Sie durch Ziehen von Aufgaben in den Kalender an.

pic003.tif

Abb. 3: Ein Termin, der durch Ziehen einer Aufgabe in den Kalender erzeugt wurde.

Synchronerfassung

Bis jetzt hat der Beitrag noch nicht viel mit Access zu tun, was sich nun ändern wird: Wie Sie vielleicht wissen, ist Outlook zwar gut in der Erfassung von Terminen, Kontakten et cetera, aber es bringt zum Beispiel keine Werkzeuge mit, um die im Verlauf eines Tages oder eines Projekts angefallenen Daten auszuwerten und gegebenenfalls in Druckform aufzubereiten (es kann prima Terminpläne und Telefonlisten drucken, aber das ist ein anderes Thema).

Hier kommt Access ins Spiel: Wenn man schon die ganzen Projektzeit-Daten in Outlook erfasst, muss es doch einen Weg geben, diese gleichzeitig in die Tabelle einer passenden Datenbank zu schreiben, die Sie unter dem Namen Projektzeiterfassung.mdb in den Beispieldateien zu diesem Beitrag finden.

Voraussetzungen/Vorbereitung

Outlook 2007 ist ein Muss für den Einsatz dieser Anwendung, da es einige Objekte und Ereigniseigenschaften mit sich bringt, ohne die das automatisierte Nachverfolgen der Änderungen an Projektordnern, Aufgaben und Tätigkeiten und das damit verbundene Eintragen der Daten in eine Datenbank nicht möglich wäre. Es gibt aber noch weitere Voraussetzungen:

  • Sie importieren die vier Module ThisOutlookSession.cls, clsTasks.cls, mdlGlobal.bas und mdlOutlook.bas in das VBA-Projekt. Den Inhalt von ThisOutlookSession.cls kopieren Sie komplett in die gleichnamige standardmäßig vorhandene Klasse (in deutschen Versionen könnte ihr Name auch DieseOutlookSitzung heißen). Zum Importieren ziehen Sie einfach die passenden Dateien aus dem Windows Explorer in den Projekt-Explorer im VBA-Editor von Outlook (Strg + R).
  • Sie müssen für das Outlook-VBA-Projekt einen Verweis auf die passende DAO-Bibliothek festlegen.
  • Stellen Sie die Konstante cStrDB auf den Pfad der Datenbank Projektzeiterfassung.accdb/.mdb ein.
  • Stellen Sie die Sicherheitseinstellungen von Outlook so ein, dass es die Ausführung von Makros zulässt!
  • Sie sollten alle, aber auch wirklich alle Routinen mit einer Fehlerbehandlung ausstatten. Hilfe bietet Ihnen dabei die Toolsammlung MZ-Tools (siehe auch Beitrag Programmierhilfe, Shortlink 450). Die beim Start von Outlook in der Ereignisprozedur Application_Startup instanzierten Variablen werden nämlich bei unbehandelten Fehlern geleert; somit erfolgt im Anschluss kein Übertragen der Daten von Projektordnern, Aufgaben und Tätigkeiten an die Datenbank mehr. In den Beispielmodulen können Sie sich ansehen, wie eine vollständige Fehlerbehandlung aussieht.

Outlook 2007 bietet immerhin einige Ereignisse, die mit den verschiedensten Ordnern und Elementen zusammenhängen und - so viel sei vorweggenommen - teilweise nicht ganz unkompliziert sind. Nun denn: Schauen wir uns an, was denn bei Verwendung des Projektzeiterfassungs-Frontends namens Outlook so alles erfasst werden müsste:

  • Wenn der Benutzer ein neues Projekt (sprich: einen Aufgabenordner) anlegt, sollte dieses ebenfalls in der Tabelle tblProjekte gespeichert werden. Andersherum wäre ein automatisches Anlegen des passenden Ordners beim Hinzufügen eines Projektdatensatzes in der Datenbank sinnvoll.
  • In beiden Fällen sollte man eine Beziehung herstellen - etwa in Form einer gemeinsamen ID. Dazu verwendet man praktischerweise die ID des Access-Datensatzes, die noch an geeigneter Stelle im Outlook-Ordner gespeichert werden muss. Mangels Alternativen kommt hier die Eigenschaft Beschreibung (VBA: Description) zum Zuge. Beim Anlegen des Projekts in der Datenbank sollte diese Eigenschaft also die neue ProjektID erhalten.
  • Eine neue Aufgabe innerhalb eines Projekts legt der Benutzer beispielsweise an, indem er den Projektordner markiert und doppelt auf die Aufgabenliste klickt. Diese Aufgabe sollte ebenfalls in Form eines Datensatzes der Tabelle tblAufgaben in der Datenbank verewigt werden. Auch hier gilt: Die Aufgaben-ID des neuen Datensatzes soll mit dem passenden Outlook-Element gespeichert werden. Glücklicherweise besitzen alle Elemente wie Mails, Termine oder Aufgaben die BillingInformation-Eigenschaft, die sonst wohl nie benötigt wird. Also schreibt man die Aufgaben-ID hier herein.
  • Fehlt noch der Bezug zum Projekt: Natürlich muss beim Anlegen der Aufgabe auch die ID des passenden Projekts berücksichtigt und in der Tabelle tblAufgaben gespeichert werden.
  • Legt der Benutzer auf oben genannte Weise eine neue Tätigkeit an, wird diese natürlich ebenfalls in der Datenbank gespeichert und zwar in der Tabelle tblTaetigkeiten. Die Tätigkeits-ID des neuen Datensatzes findet wiederum Platz in der BillingInformation-Eigenschaft. Schwierig wird es hier, die Beziehung zwischen Tätigkeit und Aufgabe herzustellen, also die Aufgabe zu ermitteln, auf der die Tätigkeit basiert.

Dies sind die Aktionen, die beim Anlegen von Elementen zu beachten sind. Es gibt noch eine Reihe weiterer Aktionen, die etwa durch das Ändern, Verschieben oder Löschen von Elementen ausgelöst werden. Dies sind im Einzelnen:

  • Umbenennen eines Projektordners: Aktualisieren von tblProjekte
  • Ändern von Eigenschaften einer Aufgabe: Aktualisieren von tblAufgaben
  • Ändern von Eigenschaften einer Tätigkeit: Aktualisieren von tblTaetigkeiten
  • Verschieben einer Aufgabe in einen anderen Ordner: Aktualisieren von tblAufgaben
  • Löschen eines Projektordners: Führt nicht zum Löschen eines Datensatzes, sondern zum Eintragen des Löschdatums in ein geeignetes Feld des Datensatzes. Sollte nur möglich sein, wenn der Projektordner keine Aufgaben enthält.
  • Löschen einer Aufgabe: wie bei Projekten. Sollte nur möglich sein, wenn es keine korrespondierenden Tätigkeiten zur Aufgabe gibt.
  • Löschen einer Tätigkeit: wie bei Projekten

Ereignisreich

Das schöne an Outlook gegenüber allen anderen Mail-Clients und PIM-Programmen ist, dass es mit VBA steuerbar ist und - noch viel besser - auch noch die Möglichkeit bietet, Ereignisse von Objekten abzufangen und mit eigenem Code zu versehen. Einen kleinen Eindruck davon haben Sie bereits im Beitrag Outlook-Objekte in Access speichern (Shortlink 500) erhalten, nun geht es an den knallharten Praxiseinsatz.

Projektordner in Projektdatensätze
umwandeln

Als Erstes kümmern Sie sich um die Projektordner: Jedesmal, wenn der Benutzer einen neuen Ordner anlegt, soll Outlook dessen Informationen in der Tabelle tblProjekte speichern. Ein Projekt entspricht ja, wie weiter vorne erwähnt, einem Aufgabenordner in Outlook. Da die Benutzer vermutlich auch noch andere Aufgabenordner als die für Projekte benötigen, erstellen Sie für die Projektordner einen speziellen übergeordneten Aufgabenordner. Outlook sollte beim Start prüfen, ob der Projektordner schon vorhanden ist und ihn gegebenenfalls anlegen. Dazu benötigen Sie zunächst eine passende Objektvariable, die in diesem Fall mit dem Schlüsselwort WithEvents deklariert wird. Auf diese Weise können Sie, ähnlich wie bei Formularen oder Steuerelementen, Ereignisprozeduren schreiben, die beim Arbeiten mit diesem Element ausgelöst werden:

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.