Im Beitrag „Projektzeiterfassung mit Outlook und Access“ haben wir Outlook um Funktionen erweitert, die eine einfache Erfassung von Projektzeiten und deren Speicherung in eine Access-Datenbank ermöglichen. Wenn Sie auf diese Weise einige Stunden mit Ihren Projekten erfasst haben, wollen Sie die gespeicherten Daten vermutlich für verschiedene Auswertungen nutzen – beispielsweise, um die bei einem Projekt aufgelaufenen Stunden zu ermitteln. Dieser Beitrag zeigt, wie Sie dies auf einfache Weise erledigen.
Im Beitrag Projektzeiterfassung mit Outlook und Access (www.access-im-unternehmen.de/1016) haben wir ja bereits das Datenmodell vorgestellt, dessen Tabellen unsere Projektzeiten aufnehmen sollen. Dort finden Sie eine Projekte-, eine Aufgaben- und eine Tätigkeitentabelle (s. Bild 1). Formulare zum Bearbeiten dieser Objekte benötigen wir prinzipiell nicht – das Anlegen, Bearbeiten und Löschen erfolgt vollständig über Outlook.
Bild 1: Datenmodell der zu berücksichtigenden Tabellen der Projektzeiterfassung
Was wir jedoch benötigen, ist ein Formular zur Auswahl der auszuwertenden Daten. Dieses sollte die Möglichkeit bieten, Tätigkeiten nach Projekt, Zeitraum et cetera zu filtern. Wir beginnen jedoch mit einem Bericht, der einen überblick über alle Elemente liefern soll – also alle Projekte, Aufgaben und Tätigkeiten über den gesamten Zeitraum.
übrigens: Wenn Sie die Projektzeiterfassung nutzen, stellt Outlook eine Verbindung zur Datei Projektzeiterfassung.accdb her. Sie können diese dann nicht mehr exklusiv öffnen, um beispielsweise neue Berichte hinzuzufügen.
Wenn Sie die Objekte der Datenbank bearbeiten möchten, sollten Sie also zuvor Outlook schließen und somit den Zugriff auf die Datenbankdatei freigeben.
Gesamtübersicht über Projekte, Aufgaben und Tätigkeiten
Diesen Bericht legen wir der Einfachheit halber zunächst in der Berichtsansicht an, die mit Access 2007 eingeführt wurde, aber wenig Beachtung findet. Erstellen Sie also einen neuen Bericht und speichern Sie diesen unter dem Namen rptProjekteAufgabenTaetigkeiten.
Danach erstellen Sie eine neue Abfrage namens qryProjekteAufgabenTaetigkeiten und fügen dieser die Tabellen tblProjekte, tblAufgaben und tblTaetigkeiten hinzu.
Aus der Tabelle tblProjekte benötigen wir die Felder ProjektID und Projekt, aus tblAufgaben die Felder AufgabeID und Aufgabe und aus tblTaetigkeiten die Felder Tae-tigkeitID, Taetigkeit, Startzeit und Endzeit. Außerdem ziehen Sie aus allen drei Tabellen das Feld GeloeschtAm in das Entwurfsraster. Stellen Sie als Kriterium für diese Felder den Ausdruck Ist Null ein. Auf diese Weise sorgen wir dafür, dass nur solche Daten in den Bericht gelangen, die nicht über Outlook gelöscht und in den Access-Tabellen als gelöscht markiert wurden (s. Bild 2).
Bild 2: Datenherkunft des Berichts zur Anzeige aller Projekte, Aufgaben und Tätigkeiten
Damit wir ein wenig Spielmaterial für die Erstellung der Berichte haben, finden Sie in Bild 3 eine Arbeitswoche mit einigen Tätigkeiten für zwei verschiedene Projekte und diverse Aufgaben.
Bild 3: Diesen vollen Wochenplan wollen wir gleich anschaulich in einem Bericht darstellen.
Die darin enthaltenen Daten schlagen sich in der Abfrage qryProjekteAufgabenTaetigkeiten wie in Bild 4 nieder. Diese müssen wir nun nur noch in entsprechender Form im Bericht anordnen.
Bild 4: Projekte, Aufgaben und Tätigkeiten in der Datenherkunft des Berichts
Berichtsbereiche definieren
Ein Bericht, der Daten zu drei verschiedenen Tabellen anzeigen soll, müssen Sie natürlich mit entsprechenden Gruppierungen versehen. Dazu klicken Sie in der Entwurfsansicht des Berichts im Ribbon auf den Eintrag Entwurf|Gruppierung und Summen|Gruppieren und sortieren. Dies blendet im unteren Abschnitt des Access-Fensters den Bereich Gruppieren, Sortieren und Summe ein. Hier klicken Sie zunächst auf Gruppe hinzufügen. Wählen Sie unter Feld auswählen dann das Feld Projekt-ID aus. Fügen Sie nun noch eine weitere Gruppe hinzu und legen Sie dafür das Feld AufgabeID fest. Außerdem wollen wir die Tätigkeiten innerhalb der Gruppen noch nach dem Startdatum sortieren. Fügen Sie nun also noch eine Sortierung über die Schaltfläche Sortierung hinzufügen hinzu und geben Sie das Feld Startdatum unter Feld auswählen an.
Für die ProjektID– und AufgabeID-Gruppen wollen wir Gruppenköpfe anzeigen, welche die Bezeichnungen der Projekte und Gruppen anzeigen. Der Detailbereich soll die Tätigkeiten und die Start- und Endzeiten enthalten. Wir gehen hier vereinfachend davon aus, dass die Tätigkeiten zu normalen Tageszeiten durchgeführt werden und nicht über die Tagesgrenzen hinweg.
Dadurch können wir mit der Vorgabe einer entsprechenden Formatierung einen Ausdruck wie den folgenden verwenden:
=Format([Startzeit];"tttt"", ""tt.mm.jjjj") & " " & Format([Startzeit];"Zeit, 24Std") & "-" & Format([Endzeit];"Zeit, 24Std")
Dies liefert die Zeitspanne der Tätigkeit etwa in der Form Montag, 1.1.2015 12:00-12:25.
Alternierenden Hintergrund ausschalten und Rahmen ausblenden
Den Wechsel der Hintergrundfarbe wollen wir für diesen Bericht deaktiveren. Dazu klicken Sie jeweils auf die Bereichsköpfe, um die jeweiligen Bereiche zu markieren, und stellen dann im Eigenschaftsfenster den Wert der Eigenschaft Alternative Hintergrundfarbe auf den Wert der Eigenschaft Hintergrundfarbe ein (zum Beispiel Hintergrund 1).
Dies ist in unserem Bericht für die Bereiche ProjektID – Kopfbereich, AufgabeID – Kopfbereich und Detailbereich notwendig.
Außerdem wollen wir die Rahmen um die Textfelder herum entfernen, die etwa unter Access 2013 oder Access 2016 automatisch hinzugefügt werden. Dazu markieren Sie die entsprechenden Steuerelemente und stellen die Eigenschaft Rahmenart auf Transparent ein.
Dem Bereich ProjektID – Kopfbereich fügen Sie nun das Feld Projektbezeichnung hinzu und stellen seine Schriftgröße auf 14, die Schriftbreite auf Fett und die Schriftfarbe auf Schwarz ein.
Den Bereich AufgabeID – Kopfbereich statten Sie mit dem Feld Aufgabe aus. Die Formatierung gestalten Sie wie bei der Projektbezeichnung, aber die Schriftgröße soll 12 lauten. Rücken Sie die Steuerelemente dieser Gruppe etwa ein, um diese optisch von der übergeordneten Ebene zu trennen.
Fehlt noch das Feld Taetigkeit, das Sie im Detailbereich platzieren. Hier lassen wir das Bezeichnungsfeld weg. Die Schriftgröße beträgt 11, die Schriftbreite ist Normal. Rechts vom Feld Taetigkeit bringen Sie ein neues Textfeld namens txtZeit unter, das Sie mit dem oben erwähnten Ausdruck für die Tätigkeitszeit füllen (s. Bild 5).
Bild 5: Erster Entwurf der Tätigkeitsübersicht
Das Ergebnis sieht dann etwa wie in Bild 6 aus. Dies ist eine gute Basis, um weitere Verfeinerungen darzustellen.
Bild 6: Berichtsansicht der Tätigkeiten
Es wäre beispielsweise für manche Zwecke praktisch, wenn Wochentag und Datum nicht zu jeder Position erscheinen würden, sondern als weiterer Gruppenkopf. Der passende Entwurf enthält dementsprechend eine weiterere Gruppierungsebene, die diesmal das Feld Startzeit enthält und wieder einen Gruppenkopf anzeigen soll. In diesem Fall müssen wir eine weitere Einstellung für die Gruppierungseigenschaften vornehmen: Dabei wählen Sie den Wert nach Tag als Gruppierungsintervall aus (s. Bild 7).
Bild 7: Gruppierung nach dem Tag der Startzeit
Die neue Gruppierung nimmt ein einziges Textfeld namens txtDatum mit dem Datum und dem folgenden Ausdruck für die Eigenschaft Steuerelementinhalt auf (s. Bild 8):
Bild 8: Tätigkeiten gruppiert nach Tagen
=Format([Startzeit]; "tttt"", ""tt.mm.jjjj")
Den Eintrag für die Eigenschaft Steuerelementinhalt des Textfeldes txtZeit reduzieren wir entsprechend:
=Format([Startzeit];"Zeit, 24Std") & "-" & Format([Endzeit];"Zeit, 24Std")
Die Berichtsansicht liefert nun die Tätigkeiten nach Tagen gruppiert und zeigt eine entsprechende Gruppierungsüberschrift an (s. Bild 9).
Bild 9: Tagesgruppierung in der Berichtsansicht
Summen in den Gruppenfüßen
Nun wäre es noch interessant, wie viel Zeit für die Erledigung einzelner Aufgaben und kompletter Projekte aufgewendet wurde. Dazu aktivieren wir für die Gruppierungen nach den Feldern ProjektID und AufgabeID die Fußbereiche.
Um genauer darzustellen, was in den Gruppenfüßen summiert wird, legen wir rechts von den Start- und Endzeiten noch ein neues Feld namens txtDauer-Tae-tigkeit an, das die reine Dauer der Tätigkeit liefern soll.
Dieses Feld erhält als Steuerelementinhalt den folgenden Ausdruck:
=Format([Endzeit]-[Startzeit];"Zeit, 24Std")
Dem Fußbereich der Gruppierung nach dem Feld AufgabeID fügen wir ein Textfeld namens txtDauerAufgabe hinzu. Dieses soll die Werte des Feldes txtDauerTaetigkeit für die aktuelle Gruppierung, also die Aufgabe, summieren.
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