Urlaubsverwaltung mit Access

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

von Klaus Giesen, Wuppertal

Urlaub, Krankheit oder sonstige Abwesenheit von Mitarbeitern sind in jedem Betrieb an der Tagesordnung. Das mag in manchen Fällen unangenehm sein, ist aber in der Regel nicht zu ändern. Der vorliegende Beitrag zeigt Ihnen, wie Sie die Fehlzeiten der Mitarbeiter Ihrer Firma mit einer Access-Datenbank verwalten und kontrollieren können. Ein wichtiger Gesichtspunkt bei der Konzeption einer solchen Lösung ist es, den zur Verwaltung der Fehlzeiten notwendigen Zeitaufwand – das heißt gleichzeitig auch die Kosten dafür – zu minimieren. Der folgende Beitrag soll dazu einen Ansatzpunkt bieten.

Die Aufgaben einer Urlaubsverwaltung mit Access lassen sich unter den Stichwörtern Erfassung, übersicht und Auswertung zusammenfassen.

Erfassung

Bei der Erfassung der entsprechenden Datumswerte in Tabellen ist die Tatsache zu berücksichtigen, dass Kalendertage nicht nur Arbeitstage sind. Hinzu kommen noch die verschiedenen beweglichen und unbeweglichen Feiertage, die auch noch in den einzelnen Bundesländern unterschiedlich sein können.

Es geht bei dieser Datenbanklösung also zunächst darum, aus zwei Datumsangaben die reinen Werk- oder Arbeitstage zu berechnen.

Im Ergänzungsheft 6/2001 von Access im Unternehmen finden Sie den Beitrag Feiertage berechnen mit Access, in dem eine programmgesteuerte Feiertagsberechnung vorgestellt wird. Diese Lösung können Sie ohne weiteres in die bestehende Anwendung übernehmen. Die Vorgehensweise wird daher hier nicht erneut behandelt.

In der vorliegenden Musterlösung finden Sie ein einfaches Endlosformular zur Erfassung von Feiertagen (siehe Bild 1).

Bild 1: Eingabeformular zur Erfassung von Feiertagen

Die Datenherkunft des Formulars ist die Abfrage qryfrmFeiertage. Sie sortiert den Inhalt der Tabelle tblFeiertage aufsteigend nach dem Datum.

Bild 2: Die Tabelle tblPersonal in der Entwurfsansicht

Diese Erfassungsmethode erlaubt Ihnen unter anderem die Berücksichtigung der unterschiedlichen Feiertagregelungen in den einzelnen Bundesländern.

übersicht

Zu einer übersicht über die Fehlzeiten eines Mitarbeiters gehört die automatische Auswertung und Präsentation von Informationen wie z. B.

  • Urlaubsanspruch
  • eventueller Resturlaub und
  • bereits genommener Urlaub.
  • Dazu bieten sich bei dieser Access-Datenbank entsprechend gestaltete übersichtsformulare an, die die notwendigen Informationen auf einen Blick liefern.

    Auswertung

    Die Auswertung einer Fehlzeitenübersicht erfolgt in der Regel auf Papier. Bei dieser Access-Lösung geht es also in erster Linie um die Erstellung entsprechender Berichte, die der Anwender anschließend ausdrucken und weiter verwenden kann.

    Vorüberlegungen zur Musterlösung

    Ein wesentlicher Aspekt der Betriebsorganisation ist die stringente Verwaltung der Fehlzeiten von Mitarbeitern. Die vorliegende Musterlösung geht von einem stark vereinfachten Modell aus:

  • Für die Arbeitstage sind drei Abwesenheitsgründe denkbar: Krankheit, Urlaub und sonstige Gründe.
  • Bei jeder der verschiedenen Abwesenheitsarten, die sich über einen oder mehrere Tage erstreckt, kann genau ein Vertreter für die Abwesenheit des betreffenden Mitarbeiters angegeben werden.
  • Bei der Auswahl eines Vertreters erfolgt eine erste einfache Plausibilitätskontrolle: Es wird geprüft, ob der zu vertretende Mitarbeiter und sein Vertreter nicht identisch sind.
  • Es lassen sich natürlich weitere, an spezielle Betriebsabläufe angepasste Plausibilitätsüberprüfungen, implementieren.

    Im folgenden Abschnitt lernen Sie das Datenmodell mit den wichtigsten Tabellen der Beispieldatenbank kennen.

    Hinweis

    Die Beispieldatenbanken Urlaub97.mdb und Urlaub2000.mdb finden Sie auf der beiliegenden Heft-CD.

    Die Tabelle tblPersonal

    Die Tabelle tblPersonal dient der Erfassung der Stammdaten der Mitarbeiter. Die Auswahl der Felder ist beispielhaft und kann leicht an Ihre individuellen Bedürfnisse angepasst werden (siehe Bild 2).

    Für das Feld Urlaubsanspruch ist ein Standardwert festgelegt, der bei der Erstellung eines neuen Datensatzes automatisch übernommen wird (siehe Bild 2).

    Bild 3: Feldeigenschaften

    Dieses Feld hat ebenso wie das Feld RestUrlaubVorjahr den Felddatentyp Zahl.

    Für die Feldgröße reicht die Einstellung Byte mit ihrem Wertebereich für Ganzzahlen bis 255 vollkommen aus. Die Verwendung der Feldgröße Long Integer wäre für diesen Zweck ist nicht nur in Bezug auf den Wertebereich überflüssig, sondern verschwendet auch unnötig Speicherplatz und Ressourcen (siehe Bild 3).

    Die Tabelle tblAbwesenheit

    Die Tabelle tblAbwesenheit speichert die Datumswerte und den Grund der Fehlzeiten (siehe Bild 4).

    Bild 4: Die Tabelle tblAbwesenheit in der Entwurfsansicht

    Außerdem ist in dieser Tabelle noch das Sekundärschlüsselfeld zur Tabelle tblPersonal vorhanden.

    Beziehungen

    Interessant ist in diesem Zusammenhang lediglich die Beziehung zwischen den Tabellen tblPersonal und tblAbwesenheit. Die Tabellenbeziehungen werden im Dialogfenster Beziehungen angezeigt (siehe Bild 5).

    Bild 5: Das Dialogfenster Beziehungen

  • Klicken Sie im Dialogfenster Beziehungen doppelt auf die Verbindungslinie zwischen den beiden Tabellen (siehe Bild 5). Daraufhin öffnet sich das Dialogfenster Beziehungen bearbeiten (siehe Bild 6).
  • Klicken Sie dort auf die Schaltfläche Verknüpfungstyp (siehe Bild 6). Das Dialogfenster Verknüpfungseigenschaften wird angezeigt (siehe Bild 7). (
  • Die zweite Option legt eine Links-Inklusionsverknüpfung oder LEFT JOIN fest. Dabei werden alle Datensätze aus der Tabelle auf der linken Seite der Verknüpfung angezeigt, auch wenn sie keine entsprechenden Werte im verknüpften Feld der Tabelle auf der rechten Seite besitzen.

  • Schließen Sie die beiden Dialoge.
  • Bild 6: Das Dialogfenster Beziehungen bearbeiten

    Bild 7: Das Dialogfenster Verknüpfungseigenschaften

    Die Beispieldatenbank besteht aus dem Hauptformular frmPersonal und dem Formular zur Eingabe der Feiertage, frmFeiertage. Vier der fünf weiteren Formulare sind Unterformulare von frmPersonal und daher nicht von nebensächlicher Bedeutung.

    Anders verhält es sich jedoch mit verschiedenen Unterformularen dieser Musterlösung, die für deren Funktionalität von entscheidender Bedeutung sind.

    Diese Unterformulare werden im weiteren Verlauf dieses Beitrags im Zusammenhang vorgestellt und beschrieben.

    Das Formular frmPersonal

    Das Formular frmPersonal besteht im Wesentlichen aus einem Registersteuerelement und zwei Schaltflächen. Die vier Seiten des Registersteuerelements enthalten die erwähnten Unterformulare.

    Bild 8: Das Formular frmPersonal mit dem Registersteuerelement

    Formular mit Registersteuerelement erstellen

  • Legen Sie ein neues Formular mit dem Namen frmPersonal an. Die Datenherkunft ist die Abfrage qryfrmPersonal.
  • Fügen Sie in der Entwurfsansicht des Formulars frmPersonal aus der Toolbox ein Registersteuerelement mit vier Registerkarten oder -seiten ein.
  • Beschriften Sie die einzelnen Registerseiten wie in Bild 8. (
  • Hinweis

    Weitere Einzelheiten zu Registersteuerelementen finden Sie im Beitrag Das Register-Steuerelement, der im Heft 3/2001 von Access im Unternehmen erschienen ist.

    Zentrales Element zur Erfassung der Fehlzeiten ist das Unterformular SubfrmAbwesenheit, das sich auf der Registerseite Abwesenheiten im Formular frmPersonal befindet (siehe Bild 10).

    Bild 9: Das Unterformular auf der Registerseite Abwesenheiten

    Das Unterformular SubfrmAbwesenheit

    Dieses Unterformular, das auf der Abfrage qrySubfrmAbwesenheit beruht, ist mit folgenden Funktionen ausgestattet:

  • Auswahl einer Abwesenheitsart
  • Eingabe von Anfangs- und Enddatum der Fehlzeit
  • Anzeige der Fehltage
  • Auswahl eines Vertreters
  • Löschen einer Fehlzeit
  • Die Punkte Berechnung der Fehltage und Auswahl einer Vertretung werden in separaten Abschnitten behandelt.

    Auswahl einer Abwesenheitsart

    Die Auswahl einer Abwesenheitsart erfolgt über das Kombinationsfeld CboAbwesenheitart, das mittels einer Werteliste gefüllt wird (siehe Bild 11).

    Bild 10: Das Eigenschaftsfenster des Kombinationsfelds CboAbwesenheitart

    Löschen einer Fehlzeit

    Beim Klick auf die Schaltfläche btnDel wird eine Ereignisprozedur aufgerufen, die den betreffenden Datensatz nach einer Sicherheitsabfrage löscht. Verantwortlich dafür ist die folgende VBA-Codezeile:

    DoCmd.RunCommand acCmdDeleteRecord

    Berechnung der Fehltage

    Die Berechnung der Fehltage erfolgt in der Abfrage qrySubfrmAbwesenheit. Die Abfrage enthält alle Felder der Tabelle TblAbwesenheit sowie ein weiteres Feld namens TageAbwesend mit folgendem Ausdruck:

    WerktageZwischen(Nz([StartDatum]);Nz([EndDatum]))

    Dieser Ausdruck berechnet mit Hilfe der Funktion WerktageZwischen aus den beiden im Formular eingegebenen Datumswerten (Anfangs- und Enddatum der Abwesenheit), die als Parameter übergeben werden, die Anzahl der Werktage.

    Praxis-Tipp

    Falls der Wert eines der beiden Steuerelemente gleich Null ist, wandelt die Funktion Nz() diesen Nullwert in eine leere Zeichenfolge um.

    Die Funktion WerktageZwischen()

    Sie finden die Funktion WerktageZwischen() im Modul basFristen der Beispieldatenbank unter Quellcode 1 abgedruckt.

    Function WerktageZwischen(ErstesDatum As Variant, ZweitesDatum As Variant) As Long
        Dim AktuellerTag As Date
          If Not (IsEmpty(ErstesDatum) Or IsEmpty(ZweitesDatum)) Then
            WerktageZwischen = ZweitesDatum - ErstesDatum + 1
               For AktuellerTag = ErstesDatum To ZweitesDatum
                If IstFeiertag(AktuellerTag) Or Weekday(AktuellerTag) = 1 Or Weekday(AktuellerTag) = 7 Then
                    WerktageZwischen = WerktageZwischen - 1
                End If
            Next
        Else
            WerktageZwischen = Empty
        End If
    End Function

    Diese Funktion stammt in abgewandelter Form aus dem Beitrag Fristen berechnen aus dem Heft 6/2001 der Reihe Access im Unternehmen.

    Die Veränderung besteht darin, mit Hilfe der Funktion IsEmpty() sicherzustellen, dass die Berechnung der Werktage erst dann ausgeführt wird, nachdem Datumswerte in beide Eingabefelder eingegeben wurden. Anderenfalls tritt der Effekt auf, der in Bild 13 zu sehen ist:

    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