Aufgabenverwaltung mit Access

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

André Minhorst, Duisburg

Die Organisation der eigenen Aufgaben ist nicht immer leicht – vor allem, wenn man sich nicht nur mit einer, sondern mit mehreren Aufgaben gleichzeitig beschäftigt. Noch schwieriger wird es, wenn die Aufgaben ganzer Projektteams koordiniert werden wollen – nur Genies beherrschen das unter Umständen entstehende Chaos. Daher sollten Sie sich schnellstens an die Entwicklung einer Aufgabenverwaltung begeben, um über Ihre und die Aufgaben Ihrer Mitarbeiter nicht den überblick zu verlieren – vor allem aber, um die richtigen Prioritäten zu setzen. Damit Sie dabei alles im Griff haben, finden Sie im vorliegenden Beitrag die passende Musterlösung.

Für die Verwaltung von Aufgaben gibt es unterschiedliche Ansätze. Vielen Menschen ist der gute alte Notizzettel noch immer die beste Hilfe, um im Tagesgeschäft nicht den überblick zu verlieren. Andere schwören auf Anwendungen wie Microsoft Outlook und dessen Aufgabenverwaltung.

Während Notizzettel für den “Solisten” in Ordnung sein mögen, sind sie der Teamarbeit sicher nicht zuträglich. Die Verwendung der Aufgabenverwaltung von Outlook ist da schon eher geeignet (siehe Bild 1). Sie bietet die wesentlichen Merkmale wie das Setzen von Priorität, Status, Fälligkeit und einige andere Eigenschaften sowie die Zuordnung von Aufgaben zu unterschiedlichen Mitarbeitern.

Bild 1: Aufgabenverwaltung mit Outlook

Allerdings gibt es keine vernünftige Möglichkeit, den Fortschritt der Aufgaben zu dokumentieren, und auch die Verbindung mit Daten anderer Systeme wie z. B. einer Projektverwaltung ist nicht vorgesehen.

Daher spricht alles für die Erstellung einer eigenen Aufgabenverwaltung, die Sie an die individuellen Anforderungen Ihres Unternehmens anpassen können: z. B. die Zuordnung von Aufgaben zu bestimmten Projekten, statistische Auswertungen der aktuellen Aufgaben usw.

Die folgenden Abschnitte erläutern die Aufgaben, die die Aufgabenverwaltung erfüllen soll.

Verwaltung vonBenutzern

Die Aufgabenverwaltung ist für den Mehrbenutzerbetrieb konzipiert. Jeder Benutzer, der neue Aufgaben anlegen, Aktionen eingeben oder einfach nur Informationen abfragen möchte, muss sich zu Beginn mit Benutzernamen und Kennwort beim System anmelden.

Hinweis

Die Anmeldung bei der Datenbank dient in der vorliegenden Version der Musterlösung lediglich dem Komfort und sorgt dafür, dass der Name des aktuellen Benutzers in Eingabeformularen automatisch voreingestellt ist. Eine konsequente Weiterentwicklung wäre zum Beispiel, Benutzern per Anwendung des Sicherheitssytems von Access aus Datenschutzgründen den direkten Zugriff auf Tabellen sperren.

Die Musterlösung enthält eine kleine Abstufung der Benutzerrechte, welche die Benutzer in Administratoren und normale Benutzer unterteilt. Administratoren sollen sich die Daten aller Benutzer ansehen dürfen, während normale Benutzer nur Daten einsehen können, die ihre eigenen Aufgaben betreffen.

Verwaltung von Projekten

Viele Aufgabenverwaltungen berücksichtigen nicht die Aufteilung der Aufgaben auf unterschiedliche Projekte. Die Musterlösung soll aber vor allem die übersicht über die zu einem bestimmten Projekt gehörenden Aufgaben erlauben.

Daher verfügt die Datenbank über eine Tabelle mit rudimentären Projektdaten, die Sie allerdings gerne durch eine Verknüpfung mit der Projekte-Tabelle einer bestehenden Projektverwaltung ersetzen können.

Verwaltung von Aufgaben

Die Hauptaufgabe der Datenbank ist natürlich die Verwaltung von Aufgaben. Zu den Aufgaben sollen nicht nur einmalig Daten eingegeben werden können.

Viele Aufgaben erfordern mehrere Schritte, erhalten während ihrer Erledigung einen anderen Ausführenden oder ihre Priorität ändert sich. Außerdem soll es möglich sein, den Status einer Aufgabe während der Bearbeitung zu ändern – z. B. von Offen auf Fertig usw. Um die einzelnen Schritte nachvollziehen zu können, soll die Datenbank jede änderung einzeln festhalten.

Durchführung von Aufgabendokumentieren

Eine der wichtigsten Anforderungen an die Aufgabenverwaltung ist die Dokumentation der Durchführung von Aufgaben. Die jeweiligen Schritte sollen als einzelne Aktionen beschrieben und gespeichert werden.

Dabei braucht es sich nicht nur um Aktionen zu handeln, die direkt mit der Erledigung der Aufgabe zu tun haben. Aufgaben können nur sinnvoll verwaltet und priorisiert werden, wenn dies umfassend und dynamisch erfolgt.

Das bedeutet, dass Eigenschaften von Aufgaben angepasst werden müssen – z. B. durch ändern der Priorität oder Auswechseln des verantwortlichen Mitarbeiters.

Selbstverständlich sind auch Statusänderungen zu dokumentieren. Für jede Tätigkeit und jede Anpassung der Aufgabe soll optimalerweise eine Aktion definiert und gespeichert werden.

Anzeige von Aufgaben

Die Musterlösung soll Aufgaben nach unterschiedlichen Kriterien anzeigen – z. B. nach Projekten, Mitarbeitern, Priorität, Status usw. sortiert oder gefiltert.

Auf diese Weise kann ein Mitarbeiter schnell überblick über seine aktuellen Aufgaben und die Projekte gewinnen, und der Projektleiter kann sich ein Bild machen, ob alle Aufgaben wunschgemäß abgearbeitet werden.

Das Datenmodell der Aufgabenverwaltung umfasst sechs Tabellen. Abb. 2 vermittelt einen überblick über die Tabellen und deren Beziehungen zueinander.

Das Beziehungsfenster aus Bild 2 enthält aus Gründen der übersichtlichkeit nicht alle Tabellen. Die Tabelle tblProjekte ist dort nicht zu finden – sie ist aber auch lediglich mit der Tabelle tblAufgaben verknüpft. Dabei verweist das Fremdschlüsselfeld ProjektID auf den Primärschlüssel der Tabelle tblProjekte.

Die Tabelle tblAufgaben

Bild 2: Das Datenmodell der Aufgabenverwaltung

Die Tabelle tblAufgaben speichert die Informationen, die beim Anlegen einer Aufgabe eingegeben werden:

  • AufgabeID
  • ProjektID: Fremdschlüsselfeld, verweist auf das Primärschlüsselfeld ProjektID der Tabelle tblProjekte
  • Aufgabe: Titel der Aufgabe
  • Aufgabenbeschreibung: Detaillierte Beschreibung der Aufgabe, daher als Memofeld ausgeführt
  • Prioritaet: Fremdschlüsselfeld, verweist auf das Feld PrioritaetID der Tabelle tblPrioritaeten
  • Status: Fremdschlüsselfeld mit Verweis auf die Tabelle tblStatus
  • AngelegtDurch: Fremdschlüsselfeld mit Verweis auf die Tabelle tblBenutzer
  • AngelegtAm: Datum der Anlage der Aufgabe
  • ZugeordnetZu: Fremdschlüsselfeld mit Verweis auf die Tabelle tblBenutzer zur Angabe, wer für die Ausführung der Aufgabe verantwortlich ist
  • Enddatum: Datum, bis zu dem die Aufgabe ausgeführt sein soll
  • ErwarteteDauer: Angabe der erwarteten Dauer in Stunden, nur für statistische Zwecke vorgesehen
  • Die Tabelle speichert noch einige weitere Werte, die den aktuellen Zustand der Aufgabe wiedergeben – z. B. Status, Priorität, ausführender Benutzer usw. Der Grund dafür ist, dass in späteren Zusammenfassungen der Informationen zu einer Aufgabe nicht nur der Status oder die Priorität beim Anlegen der Aufgabe ausgegeben werden soll, sondern auch der aktuell vorhandene Zustand.

    Bei den Aktionen kann es sich nämlich nicht nur um Tätigkeiten handeln, die direkt mit der Ausführung der Aufgabe in Verbindung stehen, sondern auch um änderung von Eigenschaften der Aufgabe – also der Priorität, des Status oder des beauftragten Mitarbeiters. Die Felder zur Speicherung der entsprechenden Informationen heißen AktuellerStatus, AktuellePrioritaet und AktuellZugeordnetZu.

    Die Tabelle tblAktionen

    Da bei jeder Aufgabe Priorität und Status wechseln und jede Aufgabe mehrere Schritte bis zur Erledigung durchlaufen kann, werden die entsprechenden Informationen der einzelnen Schritte nicht in der Tabelle tblAufgaben, sondern in einer separaten Tabelle gespeichert.

    Ein Eintrag erfolgt immer, wenn die Aufgabe bearbeitet wurde oder wenn eine Eigenschaft geändert wurde – also beispielsweise die Priorität einer Aufgabe erhöht oder herabgesetzt wurde.

    Die Tabelle tblAktionen enthält die folgenden Felder:

  • AktionID: Primärindex der Tabelle
  • Aktion: Beschreibung der durchgeführten Aktion oder des Grundes für eine änderung einer der Eigenschaften
  • AufgabeID: Fremdschlüsselfeld mit Verweis auf die Tabelle tblAufgaben
  • PrioritaetID: Fremdschlüsselfeld mit Verweis auf die Tabelle tblPrioritaeten zum Einstellen der aktuellen Priorität
  • StatusID: Fremdschlüsselfeld mit Verweis auf die Tabelle tblStatus zum Einstellen des aktuellen Status
  • AngelegtAm, AngelegtVon, ZugeordnetZu, Enddatum: wie in Tabelle tblAufgaben
  • VerbrauchteZeit: Zeit in Stunden, die für die aktuelle Aktion verbraucht wurde
  • Die Tabelle tblBenutzer

    Diese Tabelle enthält alle für die vorliegende Datenbankanwendung benötigten Benutzerinformationen.

    Falls Sie eine bereits vorhandene Mitarbeitertabelle aus einer anderen Datenbank verwenden möchten, haben Sie zwei Möglichkeiten: Entweder Sie fügen der bereits bestehenden Mitarbeitertabelle alle Felder hinzu, die Sie im Rahmen der vorliegenden Musterlösung verwenden möchten (soweit diese noch nicht vorhanden sind) oder Sie fügen der Tabelle tblBenutzer ein Fremdschlüsselfeld mit einem Verweis auf die bereits bestehende Mitarbeitertabelle hinzu.

    Die Tabelle tblBenutzer besteht aus den folgenden Feldern:

  • BenutzerID: Primärschlüsselfeld der Tabelle
  • Nachname
  • Vorname
  • Benutzername: Name zur Anmeldung an die Aufgabenverwaltung
  • Kennwort: Kennwort zur Anmeldung an die Aufgabenverwaltung
  • EMail
  • IstAdministrator: gibt an, ob der Benutzer die Daten aller Aufgaben am Bildschirm einsehen kann oder nur die der ihm zugeordneten Aufgaben.
  • Weitere Tabellen

    Die weiteren Tabellen tblPrioritaeten, tblStatus und tblProjekte bestehen im Wesentlichen aus einem Primärschlüsselfeld und der Bezeichnung des jeweiligen Elements.

    Lediglich die Tabelle tblProjekte hat noch ein Fremdschlüsselfeld namens Projektleiter, mit dem ein Benutzer aus der Tabelle tblBenutzer ausgewählt werden kann.

    Beziehungen

    Die Beziehungen wurden im Wesentlichen bereits im Rahmen der Beschreibung der Tabellen abgehandelt. Es gibt jedoch eine Besonderheit:

    Es kommt oft vor, dass von mehreren Tabellen auf die Datensätze einer Tabelle verwiesen wird – aber der Fall, dass eine Tabelle gleich mehrfach auf das Primärschlüsselfeld einer weiteren Tabelle verweist, ist in der Regel nicht so häufig.

    Bild 3: Sicherheitsabfrage vor dem Erstellen einer zweiten Beziehung zwischen zwei Tabellen

    Bild 4: Anmeldung an die Aufgabenverwaltung

    Dies ist sowohl in der Tabelle tblAufgaben als auch tblAktionen der Fall. Access bzw. das Beziehungsfenster reagiert auch etwas unerwartet, wenn Sie direkt zwei oder mehr Beziehungen zwischen zwei Tabellen erstellen möchten: Zunächst erscheint eine Abfrage, ob Sie eine neue Beziehung erstellen oder die vorhandene Beziehung bearbeiten möchten (siehe Bild 3).

    Wenn Sie richtigerweise mit Nein antworten, erstellt Access die Beziehung ordnungsgemäß, legt aber eine merkwürdige Darstellungsweise an den Tag: Statt einfach zwei Beziehungspfeile zwischen den betroffenen Feldern der beiden Tabellen anzuzeigen, zeigt es die Tabelle, deren Primärschlüsselfeld an der Beziehung beteiligt ist, zweimal an (siehe Bild 2).

    Die Anwendung der Aufgabenverwaltung erfordert zunächst einmal die Anmeldung des Benutzers bei der Datenbank, damit er seine eigenen Aufgaben ansehen kann und der Komfort bei der Eingabe von Informationen in die Tabellen der Datenbank erhöht wird.

    Anschließend erscheint eine übersicht über alle Aufgaben, die der jeweilige Mitarbeiter einsehen können soll.

    Die übersicht ist gleichzeitig die Schaltzentrale der Aufgabenverwaltung. Von hier kann der Anwender alle gewünschten Operationen ausführen:

  • Ansehen von Aufgaben und Aktionen
  • Anlegen von neuen Aufgaben
  • Hinzufügen von Aktionen zu bestehenden Aufgaben und damit ändern von Priorität, Status und Zuteilung
  • Sortieren der Aufgabenliste nach verschiedenen Kriterien
  • Ausgabe von Listen in Berichtform
  • Ausgabe von Berichten zu einzelnen Aufgaben
  • Die Musterlösung stellt keine Möglichkeit zur Eingabe und Bearbeitung von Benutzern und Projekten zur Verfügung, da diese Daten in der Regel in anderen Anwendungen bereits vorhanden sind.

    Das Anmeldeformular

    Die Arbeit mit der Aufgabenverwaltung beginnt mit der Anmeldung bei der Anwendung. Die Anmeldung übernimmt das Formular frmAnmeldung (siehe Bild 4). Das Anmeldeformular soll nicht nur beim Starten der Anwendung angezeigt werden, sondern auch beim Aufruf eines der Formulare der Datenbank aus dem Datenbankfenster heraus.

    Bild 5: Entwurfsansicht des Formulars frmAnmeldung

    Steuerelemente des Anmeldeformulars

    Private Sub cmdOk_Click()
        Dim db As Database
        Dim rstBenutzer As Recordset
        Set db = CurrentDb
        Set rstBenutzer = db.OpenRecordset("SELECT * FROM tblBenutzer " _        & "WHERE Benutzername = ''" & Me.txtBenutzername & "''", dbOpenDynaset)
        If rstBenutzer.EOF Then
            Me.txtMeldung = "Leider ist kein Benutzer mit dem angegebenen " _
                & "Namen vorhanden."
            Me.txtBenutzername.SetFocus
        Else
            If rstBenutzer!Kennwort = Me.txtKennwort Then
                Me.txtMeldung = ""
                DoCmd.Close acForm, Me.Name
                DoCmd.OpenForm "frmUebersicht"
                BenutzerID = rstBenutzer!BenutzerID
            Else
                Me.txtMeldung = "Leider haben Sie ein falsches Kennwort eingegeben."
                Me.txtKennwort.SetFocus
            End If
        End If
    End Sub

    Quellcode 1

    Das Formular besitzt zwei Textfelder zur Eingabe von Benutzername und Kennwort (siehe Bild 5). Beide Textfelder sind ungebunden. Die Eigenschaft Eingabeformat des Textfeldes txtKennwort hat den Wert Kennwort. Dadurch werden die eingegebenen Buchstaben durch Sternchen (*) ersetzt.

    Ein weiteres Textfeld namens txtMeldung dient der Ausgabe von Meldungen, z. B. wenn der Anwender eine falsche Kombination aus Benutzernamen und Kennwort eingegeben hat.

    Das Formular hat drei Schaltflächen namens cmdOk, cmdBeenden und cmdKennwortVergessen.

    Benutzereingaben bestätigen

    Die erste Schaltfläche löst die Prozedur aus Quellcode 1 aus. Die Prozedur öffnet eine Datensatzgruppe mit allen Datensätzen der Tabelle tblBenutzer, deren Benutzername mit dem Inhalt des Textfeldes txtBenutzername übereinstimmt.

    Private Sub cmdKennwortVergessen_Click()
        Dim db As Database
        Dim rstBenutzer As Recordset
        Set db = CurrentDb
        Set rstBenutzer = db.OpenRecordset("SELECT EMail, Kennwort FROM tblBenutzer " _        & "WHERE Benutzername = ''" & Me.txtBenutzername & "''")
        If rstBenutzer.EOF Then
            Me.txtMeldung = "Der angegebene Benutzername konnte nicht gefunden werden."
        ElseIf IsNull(rstBenutzer!EMail) Then
            Me.txtMeldung = "Der angegebene Benutzer hat keine E-Mailadresse."
        Else
            If MailSenden(rstBenutzer!EMail, "Ihr Kennwort", "Ihr Kennwort lautet: " _            & vbCrLf & rstBenutzer!Kennwort) = 0 Then
                Me.txtMeldung = "Sie erhalten in wenigen Augenblicken Ihr Kennwort " _                & "per E-Mail."
            Else
                Me.txtMeldung = "Der E-Mail-Versand hat nicht funktioniert."
            End If
        End If
    End Sub

    Quellcode 2

    Wenn die Datensatzgruppe keine Datensätze enthält, erscheint im Textfeld txtMeldung in roter Schrift eine Meldung, die den Benutzer auf den nicht vorhandenen Benutzernamen hinweist.

    Falls der Benutzer in der Datensatzgruppe vorhanden ist, überprüft die Prozedur das Kennwort. Wenn ein falsches Kennwort eingegeben wurde, erscheint eine entsprechende Meldung. Ist die Kombination aus Benutzernamen und Kennwort richtig, speichert die Prozedur den Wert des Feldes BenutzerID in der gleichnamigen globalen Variablen. Anschließend öffnet sie das Formular frmUebersicht.

    BenutzerID in globaler Variablen speichern

    Damit alle Formulare auf die BenutzerID des aktuellen Benutzers zugreifen können, speichern Sie diese in einer globalen Variablen gleichen Namens. Legen Sie dazu ein neues Modul an und tragen Sie die folgende Zeile ein:

    Public BenutzerID As Integer

    Speichern Sie das Modul anschließend unter dem Namen mdlGlobal.

    Anwendung beenden

    Die Schaltfläche cmdBeenden dient dem Beenden der Anwendung nach vorherigem Bestätigen durch den Benutzer.

    Kennwort vergessen

    Die Schaltfläche mit der Beschriftung Kennwort vergessen ist für Anwender gedacht, die ihr Kennwort vergessen haben. Die Schaltfläche löst die Prozedur aus Quellcode 2 aus.

    Die Prozedur öffnet eine Datensatzgruppe mit der E-Mail-Adresse und dem Kennwort des Benutzers mit dem im Textfeld txtBenutzername angegebenen Wert.

    ähnlich wie in Quellcode 1 überprüft auch diese Prozedur, ob der Benutzername vorhanden ist und ob es eine E-Mail-Adresse gibt. Falls die benötigten Informationen vorhanden sind, ruft sie die Funktion MailSenden auf, die eine Mail mit dem Kennwort an den Benutzer mit der gefundenen E-Mail-Adresse schickt.

    Public Function MailSenden(Adresse As String, _    Betreff As String, Inhalt As String) As Long
        Dim olNewMail As Object
        Dim olNewItem
        On Error GoTo MailSenden_Err
        Set olNewMail = CreateObject("Outlook.Application")
        Set olNewItem = olNewMail.CreateItem(0)
        olNewItem.Recipients.Add Adresse
        olNewItem.Subject = Betreff
        olNewItem.Body = Inhalt
        olNewItem.Send
        Set olNewMail = Nothing
        Set olNewItem = Nothing
    MailSenden_Err:
        MailSenden = Err.Number
    End Function

    Quellcode 3

    Wenn beim Versenden der E-Mail ein Fehler auftritt, gibt die Funktion MailSenden einen Wert ungleich 0 zurück. Ist dies der Fall, erscheint eine entsprechende Meldung im Textfeld txtMeldung.

    Bild 6: Formular zur übersicht über alle Aufgaben

    Die Funktion MailSenden

    Die Funktion sendet eine Mail an die im übergabeparameter Adresse angegebene E-Mail-Adresse. Die Parameter Betreff und Inhalt enthalten die Zeichenketten, die den Eigenschaften Subject und Body der E-Mail zugewiesen werden (s. Quellcode 3).

    Hinweis

    Die Funktion wird noch von anderen Formularen benötigt. Sie können sie daher am besten im Modul mdlGlobal speichern, in dem sich schon die Deklaration der Variablen BenutzerID befindet.

    Die Funktion verwendet Microsoft Outlook zum Versenden der E-Mail. Wenn Sie ein anderes Mailprogramm benutzen, müssen Sie die Funktion entsprechend anpassen oder gegebenenfalls auf einen alternativen Weg finden.

    Falls beim Versenden der E-Mail irgendein Fehler auftritt, ist der Rückgabewert der Funktion ungleich 0.

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    Testzugang

    eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar