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.
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:
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
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.
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
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:
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