Aufgabenplanung für das Backoffice

Christoph Spielmann, Düsseldorf

Der klassische Aufgabenbereich des Sekretariats hat sich vom Tippen von Dokumenten und der Terminverwaltung auf eine Vielzahl anderer Tätigkeiten verlagert. Ursache hierfür ist insbesondere der Einsatz von PCs. Da viele Arbeiten zügig am PC erledigt werden können, werden im Sekretariat Kapazitäten frei. Dadurch teilen sich oftmals mehrere Mitarbeiter eine Team-Assistentin oder einen Team-Assistenten als “BackOffice”. Die hier vorgestellte Datenbank ermöglicht Ihnen die effiziente Planung der Back-Office-Aufgaben.

Die vorgestellte Musterlösung basiert auf insgesamt drei Tabellen, von denen die Tabelle tblMitarbeiter aus dem Beitrag Kooperation von Datenbanken aus Ausgabe 3/2004 stammt. Für den hier vorgestellten Zweck sind die beiden Felder Nachname und Vorname wichtig. Zusätzlich ist die Tabelle um die beiden Felder IstBackOffice und Login erweitert worden.

Das Feld IstBackOffice gibt an, ob ein Mitarbeiter zum BackOffice-Team gehört, also diesem Mitarbeiter Aufgaben zugewiesen werden können.

Das Feld Login enthält den Anmeldenamen des aktuellen Benutzers. Da es sich bei den Daten dieser Datenbank nicht um vertrauliche Angaben handelt, wird auf ein Passwort verzichtet.

In der Tabelle tblAufgaben werden die für das BackOffice geplanten Aufgaben gespeichert. Die Tabelle hat den in Tab. 1 beschriebenen Aufbau.

Zusätzlich enthält die Datenbank noch die bereits erwähnte Tabelle tblPrioritäten (Aufbau s. Tab. 2).

Standardmäßig ist die Tabelle mit drei Datensätzen passend zu den Prioritäten “Hoch”, “Mittel” und “Gering” gefüllt, wie Sie Bild 2 entnehmen können.

Feldname

Beschreibung

AufgabeID

Primärschlüssel (AutoWert)

PrioritätID

Fremdschlüssel mit einer Beziehung zur Tabelle tblPrioritäten

VonMitarbeiterID

Von wem wurde die Aufgabe geplant

FürMitarbeiterID

Für wen ist die Aufgabe bestimmt

AnlageAm

Anlagedatum

FälligAm

Datum, an dem die Aufgabe spätestens erledigt sein soll

ErledigtAm

Tag, an dem die Aufgabe tatsächlich erledigt wurde

GeplanteAusführungAm

Geplantes Datum der Ausführung der Aufgabe

GeplanterAufwandInMinuten

Zu erwartender Aufwand zur Erledigung der Aufgabe (Zahlenfeld)

Aufgabentitel

Bezeichnung der Aufgabe (Textfeld)

Zusatzinformationen

Weitere Informationen zur näheren Beschreibung der Aufgabe (Memo-Feld)

Tab. 1: Felder der Tabelle tblAufgaben

Feldname

Beschreibung

PrioritätID

Primärschlüssel

Priorität

Priorität (Textfeld)

SortierPosition

Bestimmt die spätere Reihenfolge der Anzeige in einem Kombinationsfeld

Tab. 2: Aufbau der Tabelle tblPrioritäten

Bild 1: Die Tabelle tblPrioritäten

Die vollständige Datenstruktur entnehmen Sie Bild 1. Beachten Sie, dass die Tabelle tblMitarbeiter aufgrund der zweifachen Beziehung zur Tabelle tblAufgaben doppelt in dem Diagramm aufgeführt, aber nur einmal in der Datenbank vorhanden ist.

Bild 2: Die vollständige Datenstruktur

Um den Einsatz der Datenbank möglichst komfortabel zu gestalten, greift das Anmeldeverfahren auf den Benutzernamen zu, den Sie bei der Anmeldung unter Windows verwendet haben. Das Auslesen dieses Namens erledigt die Prozedur GetLogin (s. Quellcode 1).

Die Prozedur greift mittels Environ-Funktion auf die Systemvariable USERNAME zu. Hier ist der Name des momentan angemeldeten Benutzers hinterlegt.

Sollte hier kein Name zu finden sein (zum Beispiel, weil das Anmeldeverfahren nicht aktiviert ist), zeigt die Funktion ein Eingabedialogfenster an. Die Eingabe wird anschließend in der globalen Variablen m_Login zwischengespeichert, sodass beim erneuten Aufruf der Funktion keine wiederholte Eingabe des Anmeldenamens erforderlich ist.

Nach der Ermittlung des Anmeldenamens wird mit Hilfe der Funktion GetMitarbeiterIDForLogin geprüft, ob der Login-Name auch in der Tabelle tblMitarbeiter existiert. Sollte dies nicht der Fall sein, erfolgt ein Sprung zur erneuten Eingabe des Anmeldenamens.

Die Ermittlung der MitarbeiterID wird von der bereits erwähnten Funktion GetMitarbeiterIDForLogin erledigt (s. Quellcode 2).

Sie bewerkstelligt dies durch Einsatz der DLookup-Funktion. Sollte kein passender Mitarbeiter gefunden werden, wandelt die Nz-Funktion das Ergebnis in den Wert 0 um und liefert diesen als Funktionsergebnis zurück. Als Parameter erwartet die Funktion den Login-Namen des gewünschten Benutzers.

Public Function GetLogin() As String
    Dim Login As String
    Login = Environ("USERNAME")
    If Len(Login) = 0 Then
        If Len(m_Login) = 0 Then
EnterLogin:
            m_Login = InputBox("Bitte geben Sie Ihr Login ein!")
            Login = m_Login
        Else
            Login = m_Login
        End If
    Else
        Login = Login
    End If
    If GetMitarbeiterIDForLogin(Login) = 0 Then
        GoTo EnterLogin:
    Else
        GetLogin = Login
    End If
End Function

Quellcode 1

Public Function GetMitarbeiterIDForLogin(Login As String) As Long
    GetMitarbeiterIDForLogin = Nz(DLookup("MitarbeiterID", "tblMitarbeiter", _        "Login=''" + Login + "''"), 0)
End Function

Quellcode 2

Public Function GetCurrentMitarbeiterID() As Long
    GetCurrentMitarbeiterID = GetMitarbeiterIDForLogin(GetLogin)
End Function
Public Function IsCurrentMitarbeiterBackOffice() As Boolean
    Dim MitarbeiterID As Long
    MitarbeiterID = GetCurrentMitarbeiterID
    IsCurrentMitarbeiterBackOffice = DLookup("IstBackOffice", "tblMitarbeiter", _        "MitarbeiterID=" + CStr(MitarbeiterID))
End Function

Quellcode 3

Zwei weitere Hilfsfunktionen ermitteln die Nummer des aktuellen Benutzers und die Information, ob der momentan angemeldete Benutzer ein BackOffice-Mitarbeiter ist (s. Quellcode 3).

Sie finden die Funktionen im Modul modMitarbeiter der Beispieldatenbank zu diesem Artikel.

Das Erfassen einer neuen Aufgabe wird über das Formular frmNeueAufgabe erledigt (siehe Bild 3).

Bild 3: Das Formular zur Erfassung einer neuen Aufgabe

Private Sub btnAbbrechen_Click()
    Me.Undo
    DoCmd.Close acForm, Me.Name
End Sub
Private Sub btnOK_Click()
    If CheckValues Then
        DoCmd.Close acForm, Me.Name
    End If
End Sub

Quellcode 4

Das Formular enthält alle zum Erfassen neuer Aufgaben relevanten Felder. Das Kombinationsfeld FürMitarbeiterID zeigt eine Liste mit allen Mitarbeitern an, bei denen das Feld IstBackOffice den Wert True enthält. Die Datensatzherkunft-Eigenschaft des Kombinationsfeldes enthält zu diesem Zweck die folgende SQL-Anweisung:

SELECT Trim([Vorname]+” ”+[Nachname])

AS Name, MitarbeiterID FROM

tblMitarbeiter WHERE IstBackOffice=True

ORDER BY Trim([Vorname]+” ”+[Nachname]);

Wichtig ist noch, dass der Vorname und der Nachname in dieser Abfrage zu einem Text zusammengefügt werden, sodass letztendlich nur zwei Spalten, nämlich der volle Name und die MitarbeiterID von der Abfrage zurückgegeben werden. Das Sortieren erfolgt schließlich nach dem Vornamen und dem Nachnamen. Das Kombinationsfeld PrioritätID wird mit der folgenden SQL-Anweisung gefüllt:

SELECT tblPrioritäten.Priorität, tblPrioritäten.PrioritätID FROM tblPrioritäten ORDER BY tblPrioritäten.SortierPosition;

Bei beiden Kombinationsfeldern ist die Spaltenanzahl-Eigenschaft auf 2 und die Eigenschaft Gebundene Spalte-Eigenschaft ebenfalls auf 2 eingestellt. Die Spaltenbreiten sind mit 5cm;0cm definiert.

Das Formular selbst ist an die Tabelle tblAufgaben geknüpft. Die Eigenschafts-Einstellungen aus Tab. 3 sind wichtig, damit unter anderem in dem Formular ausschließlich neue Datensätze erfasst werden können. Die beiden Schaltflächen des Formulars sind mit den Ereignisprozeduren aus Quellcode 4 verknüpft.

In der btnAbbrechen_Click-Ereignisprozedur wird zunächst die Methode Me.Undo aufgerufen, damit eventuell eingegebene Daten nicht gespeichert werden. Danach kann das Formular geschlossen werden.

In der Ereignisprozedur btnOK_Click wird die Undo-Methode nicht aufgerufen. Dies führt dazu, dass die eingegebenen Daten beim Schließen des Formulars auf jeden Fall gespeichert werden. Die CheckValues-Funktion prüft jedoch vorher noch, ob die Daten korrekt erfasst wurden (s. Quellcode 5). Die einzelnen Blöcke der Prozedur prüfen das Vorhandensein der erforderlichen Daten sowie die Plausibilität der Angaben. Ist alles in Ordnung, gibt die Funktion True als Ergebnis zurück.

Private Function CheckValues() As Boolean
    If IsNull(Me!Aufgabentitel) Then
        MsgBox "Bitte geben Sie einen Aufgabentitel ein!", vbCritical
        CheckValues = False
        Exit Function
    End If
    If IsNull(Me!PrioritätID) Then
        MsgBox "Bitte geben Sie eine Priorität an!", vbCritical
        CheckValues = False
        Exit Function
    End If
    ''...weitere Validierungen
    If Me!GeplanteAusführungAm < Now Then
        MsgBox "Das geplante Ausführungsdatum muss in der Zukunft liegen!", vbCritical
        CheckValues = False
        Exit Function
    End If
    CheckValues = True
End Function

Quellcode 5

Sollte die Prüfung erfolgreich verlaufen, kann der Datensatz gespeichert werden. Vorher wird jedoch noch das Anlagedatum und die ID des aktuellen Mitarbeiters in die entsprechenden Felder AnlageAm und VonMitarbeiterID eingetragen. Dies erledigt eine Ereignisprozedur, die mit dem Vor Aktualisierung-Ereignis des Formulars verknüpft ist (s. Quellcode 6).

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

Schreibe einen Kommentar