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/2005.

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 die Projektzeitverwaltung um Funktionen zur Auswertung der eingegebenen Daten.

Techniken

Formulare, Berichte

Voraussetzungen

Access 2000 oder höher

Beispieldateien

Projektzeitverwaltung_FE_Controller.mdb
Projektzeitverwaltung_FE_User.mdb
Projektzeitverwaltung_BE.mdb

Projektzeitverwaltung, Teil 2

André Minhorst, Duisburg

Im ersten Teil der Beitragsreihe zum Thema Projektzeitverwaltung haben Sie die wichtigsten Techniken für die Eingabe der Projektzeiten kennen gelernt. Im vorliegenden Beitrag erfahren Sie, wie Sie die Datenbank so aufteilen, dass Mitarbeiter und "Controller" mit separaten Frontends auf die Daten zugreifen können - die einen schreiben, die anderen werten aus. Außerdem erweitern Sie das Frontend zur Auswertung um einige wichtige Funktionen.

Aufteilen der Anwendung

Die im ersten Teil vorgestellte Version der Projektzeitverwaltung besteht lediglich aus einer einzigen Datenbank - an den Einsatz im Mehrbenutzerbetrieb ist damit also nicht zu denken.

Ganz davon abgesehen soll die Datenbank ja nicht nur für den klassischen Mehrbenutzerbetrieb ausgelegt werden, sondern auch für unterschiedliche Benutzergruppen verschiedene Frontends anbieten.

Da Sie ja möglicherweise die erste Version der Projektzeitverwaltung verwendet haben, um Projektzeiten einzutragen, finden Sie nachfolgend eine Anleitung, wie Sie diese Datenbank aufteilen und die eingegebenen Daten weiterverwenden können.

Backend erstellen

Erzeugen Sie also zunächst eine neue, leere Access-Datenbank und importieren Sie dort alle Tabellen der Version des ersten Teils der Beitragsreihe. Dazu rufen Sie den Menüeintrag Datei/Externe Daten/Importieren... auf und wählen im anschließend erscheinenden Dialog die alte Version der Projektzeitverwaltung aus. Anschließend importieren Sie die benötigten Tabellen, sodass sich im Datenbankfenster der neu erstellten Datenbank ein Bild wie in Abb. 1 ergibt.

Abb. 1: Datenbankfenster der Backend-Datenbank

Frontend mit Backend verknüpfen

Anschließend können Sie die betroffenen Tabellen aus dem Datenbankfenster der ehemaligen "All-in-One"-Datenbank löschen, um diese direkt im folgenden Zug mit den Tabellen des Backends zu verknüpfen. Das läuft über den Menüeintrag Datei/Externe Daten/Tabellen verknüpfen..., der Rest entspricht prinzipiell dem soeben durchgeführten Import-Vorgang.

Das Datenbankfenster des Frontends sieht nun wie in Abb. 2 aus. Die Pfeile markieren die verknüpften Tabellen. In der fertigen Beispieldatenbank finden Sie zusätzlich die vier Tabellen tblNachnamen, tblOrte, tblStrassen und tblVornamen - neben den beiden Modulen clsBeispieldaten und mdlBeispieldaten sowie einigen Abfragen handelt es sich hierbei um die Werkzeuge, um ausreichend Testdaten anzulegen.

Abb. 2: Datenbankfenster des Frontends zur Projektzeiteingabe für die Mitarbeiter

Abb. 3: Formular zum Anlegen, Bearbeiten und Löschen von Projekten

Sie finden damit ein etwas umfangreicheres Beispiel für das Anlegen von Testdaten - Grundlagen dazu haben Sie ja bereits im Beitrag Beispieldaten generieren (Shortlink 303) kennen gelernt.

Sie benötigen nun zwei verschiedene Frontends der Datenbank. Das Frontend zur Projektzeiteingabe für jeden einzelnen Mitarbeiter ist prinzipiell fertig, Sie müssen nur noch die bereits im ersten Teil des Beitrags beschriebenen Formulare zum Verwalten von Mitarbeitern und Projekten herausnehmen - natürlich nicht, bevor Sie eine Kopie des Frontends namens Projektzeitverwaltung_FE_Controller.mdb erstellt haben, das im folgenden Kapitel erweitert wird. Welche Datenbankobjekte in dem Benutzerfrontend übrig bleiben sollen, schauen Sie sich am einfachsten in der Beispieldatenbank Projektzeitverwaltung_FE_User.mdb an.

Controller-Frontend erweitern

Das Controller-Frontend enthält drei Formulare, mit denen Sie Projekte, Mitarbeiter und Kunden verwalten können.

Projekte verwalten

Das Formular frmProjekte dient dem Verwalten der Projekte, deren Projektzeiten ermittelt werden sollen (s. Abb. 3). Es bietet wie auch die nachfolgend vorgestellten Formulare die Möglichkeit, einen anderen Datensatz mit einem Kombinationsfeld zur Schnellsuche auszuwählen.

Die Schaltflächen unter den Daten des jeweiligen Datensatzes dienen dem Anlegen eines neuen (Neu) und dem Löschen des aktuell angezeigten Datensatzes (Löschen).

Mit OK und Abbrechen lässt sich das Formular schließen - wahlweise mit oder ohne Übernahme eventuell getätigter Änderungen.

Mitarbeiter verwalten

Das Formular zum Verwalten der Mitarbeiter ermöglicht nicht nur das Anlegen, Löschen und Bearbeiten der Mitarbeiterdatensätze, sondern auch noch das Zuordnen der Projekte, die ein Mitarbeiter bearbeiten dürfen soll (s. Abb. 4).

Dies ist eine wichtige Eigenschaft im Hinblick auf das Benutzerfrontend: Sie erinnern sich, dass das Benutzerfrontend zur Eingabe der Projektzeiten einen Dialog enthielt, mit dem die Mitarbeiter die Projekte und deren Reihenfolge auswählen können, die im Hauptformular der Anwendung angezeigt werden sollen.

Abb. 4: Verwalten von Mitarbeitern und Zuordnen der jeweiligen Projekte

Abb. 5: Rückblick auf den ersten Teil der Beitragsreihe: Das Hauptformular zur Projektzeiteingabe und der Dialog zum Verwalten der angezeigten Projekte

Falls nicht, schauen Sie sich noch einmal Abb. 5 an. Der momentan im Vordergrund befindliche Dialog zeigt alle Projekte an, die dem Mitarbeiter im Dialog aus Abb. 4 zugeordnet wurden. Sie können damit als Controller also festlegen, für welche Projekte der Mitarbeiter überhaupt arbeiten soll.

Verwalten der Kunden

Auch die Kunden wollen verwaltet werden. Der Aufbau des dazu verwendeten Formulars ist dem zuvor beschriebenen ähnlich - mit dem Unterschied, dass die dem Kunden zugeordneten Projekte nicht entfernt und wieder hinzugefügt werden können (s. Abb. 6).

Dafür lässt sich mit einem Doppelklick auf einen Eintrag der Projektliste das jeweilige Projekt im entsprechenden Formular anzeigen.

Ermittlung der Projektkosten

Bestenfalls lässt sich mit der Projektzeitverwaltung direkt ermitteln, wie teuer ein Projekt in der internen Endabrechnung ist. Die Zeiten, die Mitarbeiter mit den verschiedenen Projekten verbringen, werden ebenso gespeichert wie die Tätigkeitsarten. Fehlt noch eine Größe, die den Wert der geleisteten Arbeit umreißt - also irgendeine Zahl, die sich in Euro ausdrücken lässt.

Die vorliegende Anwendung ermöglicht eine relativ flexible Herangehensweise: Es lässt sich je Mitarbeiter und Tätigkeitsart ein Stundensatz festlegen.

So können Sie im extremsten Fall tatsächlich jede Kombination aus Mitarbeiter und Tätigkeit mit einem individuellen Stundensatz belegen.

Aber auch praxisnähere Einstellungen sind möglich - wie etwa das Festlegen eines festen Stundensatzes für eine bestimmte Tätigkeit oder für einen bestimmten Mitarbeiter.

Abb. 6: Verwalten von Kunden und Anzeigen ihrer Projekte

Abb. 7: Tabellen zum Festlegen der Stundensätze je Mitarbeiter und Tätigkeitsart

Abb. 8: Flexibles Einstellen der Stundensätze je Mitarbeiter und Tätigkeitsart

Für diese Flexibilität sorgen die drei Tabellen tblMitarbeiter, tblTaetigkeitsarten und tblStundensaetze, deren Beziehungen Sie Abb. 7 entnehmen können.

Die flexible Handhabung erfordert ein wenig Hirnschmalz für die Gestaltung eines einfachen Formulars. Das Formular aus Abb. 8 zeigt alle Kombinationen aus Mitarbeitern und Tätigkeitsarten sowie den jeweiligen Stundensatz an.

Auch wenn die Ansicht in der Abbildung einen anderen Eindruck erzeugt, lässt sich der Stundensatz individuell anpassen. Um diese Änderung vorzunehmen, stellen Sie für die Optionsgruppe im oberen Bereich des Formulars die erste Option ein. Der Stundensatz lässt sich dann für jede Kombination einzeln einstellen.

Falls Sie die ganze Stundensatz-Geschichte ein wenig einfacher halten möchten, verwenden Sie eine der beiden anderen Optionen. Wenn Sie etwa die Option Tätigkeitsart wählen und dann den Stundensatz für eine Tätigkeitsart eines Mitarbeiters ändern, wird diese automatisch auch für alle anderen Mitarbeiter angepasst.

Das Gleiche gilt für die Mitarbeiter: Wenn Sie die dritte Option markieren und dann einen Stundensatz anpassen, wird dieser für alle anderen Kombinationen mit dem gleichen Mitarbeiter auf diesen Stundensatz eingestellt.

Das funktioniert natürlich nicht von allein - ein wenig VBA ist dazu schon vonnöten. Die entsprechende Prozedur, die beim Eintreten des Ereignisses Nach Aktualisierung des Textfeldes mit dem Stundensatz ausgelöst wird, sieht wie in Quellcode 1 aus.

Eine Select Case-Verzweigung prüft, welcher Wert in der Optionsgruppe ausgewählt ist, und sorgt für die Ausführung der passenden Codezeilen. Ist die erste Option ausgewählt, kann die Routine direkt wieder beendet werden, da nur der ohnehin geänderte Datensatz betroffen ist.

Wenn aber beispielsweise die zweite Option aktiv ist, löst dies zwei Aktionsabfragen aus: Die erste aktualisiert alle Datensätze der Tabelle tblStundensaetze, die die gleiche Tätigkeitsart wie der im Formular angepasste Datensatz haben, auf den entsprechenden Stundensatz.

Die zweite Abfrage versucht, diesen Stundensatz für alle vorhandenen Mitarbeiter in Kombination mit der betreffenden Tätigkeitsart hinzuzufügen - was in den meisten Fällen scheitern dürfte, da die Tabelle einen eindeutigen Index über die beiden Felder TaetigkeitsartID und MitarbeiterID enthält.

Quellcode 1: Anpassen der Stundensätze von Gruppen von Mitarbeitern oder Tätigkeitsarten

Private Sub Stundensatz_AfterUpdate()

    Dim db As DAO.Database

    Dim lngMitarbeiterID As Long

    Dim lngTaetigkeitsartID As Long

    Dim lngStundensatzID As Long

    Dim intStundensatz As Integer

    intStundensatz = Me!Stundensatz

    lngStundensatzID = Me.StundensatzID

    Set db = CurrentDb

    Select Case Me.Parent.ogrStundensaetze

        Case 1

            Exit Sub

        Case 2

            lngTaetigkeitsartID = Me.TaetigkeitsartID

            db.Execute "UPDATE tblStundensaetze SET Stundensatz = " & intStundensatz _
                & " WHERE TaetigkeitsartID = " & lngTaetigkeitsartID _
                & " AND NOT StundensatzID = " & lngStundensatzID

            On Error Resume Next

            db.Execute "INSERT INTO tblStundensaetze(MitarbeiterID, TaetigkeitsartID, " _
                & "Stundensatz) SELECT MitarbeiterID, " & lngTaetigkeitsartID _
                & " AS TaetigkeitsartID, " & intStundensatz _
                & " AS Stundensatz FROM tblMitarbeiter"

            On Error GoTo 0

        Case 3

            lngMitarbeiterID = Me.MitarbeiterID

            db.Execute "UPDATE tblStundensaetze SET Stundensatz = " & intStundensatz _
                & " WHERE MitarbeiterID = " & lngMitarbeiterID & " AND NOT StundensatzID = " _
                & lngStundensatzID

            On Error Resume Next

            db.Execute "INSERT INTO tblStundensaetze(MitarbeiterID, TaetigkeitsartID, " _
                & "Stundensatz) SELECT " & lngMitarbeiterID _
                & " AS MitarbeiterID, TaetigkeitsartID, " & intStundensatz _
                & " AS Stundensatz FROM tblTaetigkeitsarten"

            On Error GoTo 0

    End Select

    Set db = Nothing

End Sub

Der Sinn des Ganzen ist, dass eventuell neu angelegte und noch nicht beim Festlegen von Stundensätzen berücksichtigte Mitarbeiter direkt mit dem für diese Tätigkeitsart gültigen Stundensatz bedacht werden.

Auswertungen

Die wichtigsten Funktionen einer Anwendung wie die Projektzeitverwaltung sind die Auswertungen.

Pivot-Tabellen

Wie Sie im Beitrag Pivot-Tabellen mit Access (Shortlink 311) lesen können, bieten Pivot-Tabellen sehr gute Möglichkeiten, Daten wie die der Projektzeitverwaltung auszuwerten. Die Beispiele dieses Beitrags beschäftigen sich mit der Projektzeitverwaltung, daher sei an dieser Stelle auf den genannten Beitrag verwiesen.

Abb. 9: Datenherkunft des Berichts zur Ausgabe der Tätigkeiten je Mitarbeiter

Berichte

Abb. 10: Der Bericht zur Ausgabe der Tätigkeiten eines Mitarbeiters in der Entwurfsansicht

Eine andere und Ihnen vermutlich geläufigere Art der Auswertung sind Berichte. Im Rahmen der Projektzeitverwaltung lernen Sie zwei unterschiedliche Berichte kennen.

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.