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

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

Feiertage berechnen mit Access

Autor: André Minhorst, Duisburg

"Feiertage berechnen - wozu soll das denn gut sein?", werden Sie sich vielleicht jetzt fragen: "Die stehen doch alle in meinem Kalender!" Das ist durchaus richtig, sofern Sie noch nicht dazu übergegangen sind, Microsoft Outlook anstelle eines Kalenders zu verwenden. Hier ist es nämlich keineswegs selbstverständlich, dass alle vorhandenen Feiertage auch vermerkt sind - Sie müssen der Anwendung erst mitteilen, dass sie auch die Feiertage anzeigen soll. Auch zur Berechnung von Fristen ist die Kenntnis der Feiertage nicht unwichtig - es ist schließlich kein Zufall, dass Sie noch nie an einem Feier- oder Sonntag ein Buch zur Bücherei zurückbringen mussten.

Ziel der Anwendung zur
Feiertagsberechnung

Die im Folgenden vorgestellte Anwendung soll eine Tabelle erstellen, die alle Feiertage in einem bestimmten Bundesland in einem bestimmten Zeitraum enthält. Dabei soll der Anwender das gewünschte Bundesland und den Zeitraum selbst auswählen können.

Zweck der Feiertagstabelle

Mit der Tabelle lassen sich anschließend weitere nützliche Aufgaben durchführen: Zum einen kann sie als Grundlage für die Berechnung von Fristen dienen. Die Berechnung von Fristen wird im Beitrag Fristen berechnen leicht gemacht in der vorliegenden Ausgabe vorgestellt.

Zum anderen erstellen Sie mit Hilfe der Tabelle eine Datei, die Sie als Grundlage für die in Outlook angezeigten Feiertage verwenden können. Dabei erfahren Sie auch noch, wie Sie Outlook dazu bringen, die angegebenen Daten zu übernehmen.

Grundlagen über die
unterschiedlichen Feiertage

Feiertage lassen sich in drei Kategorien einteilen: Erstens gibt es Feiertage, die immer auf das gleiche Datum fallen. Das sind z. B. Silvester, Weihnachten, der Tag der Arbeit (1. Mai) und einige andere. Die zweite Kategorie sind die Feiertage, die meistens auf den gleichen Kalendertag fallen, aber nicht zwangsläufig auf das gleiche Datum.

Dabei handelt es sich beispielsweise um die Osterfeiertage, Christi Himmelfahrt oder Fronleichnam. Zur dritten Kategorie gehören die Adventstage und der Buß- und Bettag. Sie haben einen bestimmten Abstand vom Datum des Heiligabend. Dabei spielt auch der Wochentag des Heiligabend eine Rolle.

Eine weitere Schwierigkeit ist, dass manche Feiertage nicht in allen, sondern nur in bestimmten Bundesländern gefeiert werden.

Verwaltung der Feiertagsdaten

Die Verwaltung der Feiertagsdaten beschränkt sich nicht nur auf die Feiertagsdaten selbst, sondern auch auf die Bundesländer, in denen bestimmte Feiertage gefeiert werden. Daher benötigen Sie zunächst einmal eine Tabelle mit den Grunddaten, die in den nächsten Abschnitten vorgestellt wird. Außerdem benötigen Sie eine Tabelle, die eine Auflistung der einzelnen Bundesländer enthält sowie eine Tabelle, um die Feiertage den Bundesländern zuzuordnen.

Tabelle der Feiertagsdaten

Wie bereits erwähnt, gibt es drei unterschiedliche Kategorien von Feiertagen. Zur Berechnung der Feiertage sind unterschiedliche Informationen erforderlich, die in einer Tabelle namens tblFeiertageGrunddaten gespeichert werden sollen (s. Abb. 1).

Das erste Feld der Tabelle heißt FeiertagNr und dient als Primärindex. Das Feld Feiertag beinhaltet die Bezeichnung der Feiertage.

Da es einige Feiertage gibt, die an festen Daten stattfinden, enthält die Tabelle weiterhin zwei Felder mit dem Tag und dem Monat des Feiertages.

Das nächste Feld ist das Feld FeiertagArt. Hier trägt man ein, ob der Feiertag an einem bestimmten Datum ist, ob er vom Datum des Osterfeiertags abhängt oder ob er vom Datum des vierten Advent abhängt.

Das Feld ist mit der Tabelle tblFeiertagsarten verknüpft. Sie enthält die Nummer der Feiertagsart und deren Bezeichnung (s. Abb. 2).

Abb. 2: Tabelle der unterschiedlichen Feiertagsarten

Feiertage verschiedener
Bundesländer

Es gibt bekanntlich vereinzelte Feiertage, die nicht in allen oder sogar nur in wenigen Bundesländern gefeiert werden. Diese Tatsache soll auch bei der Berechnung der Feiertage berücksichtigt werden.

m:n-Beziehung zwischen Feiertagen und Bundesländern herstellen

Um festzulegen, welcher Feiertag in welchem Bundesland gefeiert wird, benötigen Sie eine m:n-Verknüpfung. Die eine Tabelle der Verknüpfung ist die Tabelle tblFeiertageGrunddaten, die andere Tabelle müssen Sie noch erstellen: Sie enthält eine Auflistung aller Bundesländer (s. Abb. 4).

Abb. 3: Entwurfsansicht der Tabelle tblFeiertageBundesländer

Die beiden Tabellen werden über eine Verknüpfungstabelle miteinander verbunden. Die Verknüpfungstabelle heißt tblFeiertageBundesländer und enthält nur zwei Felder: das Feld FeiertagNr und das Feld BundeslandNr (s. Abb. 3).

Die beiden Felder sind mit den jeweiligen Primärindexfeldern der beiden Tabellen tblFeiertage und tblBundesländer verknüpft.

Abb. 4: Die Tabelle tblBundesländer

Formular zur Verwaltung von Feiertagen und Bundesländern

Die Daten der einzelnen Feiertage und die Bundesländer, in denen sie gefeiert werden, können Sie bequem in einem Formular verwalten.

Das Formular enthält als Datenherkunft die Tabelle tblFeiertageGrunddaten. Die Darstellung der mit den Feiertagen verknüpften Bundesländer ist über zwei Listenfelder realisiert. Das rechte Listenfeld enthält alle Bundesländer, in denen der Feiertag begangen wird, das linke Listenfeld enthält die restlichen Bundesländer (s. Abb. 5).

Sie können einzelne Bundesländer zwischen den beiden Listenfeldern hin- und herbewegen oder alle Einträge entweder in das linke oder rechte Listenfeld schieben.

Hinweis

Weitere Informationen zur Realisierung der Darstellung einer m:n-Beziehung mit zwei Listenfeldern können Sie direkt aus der Beispieldatenbank oder dem Beitrag Fristen berechnen leicht gemacht dieses Heftes entnehmen. (

Abb. 5: Formular zur Eingabe der Feiertagsdaten

Function VierterAdvent(Jahr As Long) As Date

    VierterAdvent = CDate("24.12." & Jahr)

    Do While Not Weekday(VierterAdvent) = 1

        VierterAdvent = VierterAdvent - 1

    Loop

Function Ostersonntag(Jahr As Long) As Date

    Dim a, b, c, d, e, Tag, Monat

    a = Jahr Mod 19

    b = Jahr Mod 4

    c = Jahr Mod 7

    d = (19 * a + 24) Mod 30

    e = (2 * b + 4 * c + 6 * d + 5) Mod 7

    Tag = 22 + d + e

    Monat = 3

    If Tag > 31 Then

        Tag = d + e - 9

        Monat = 4

    End If

    Ostersonntag = Tag & "." & Monat & "." & Jahr

VBA-Funktionen zur
Berechnung der Feiertagsdaten

Einige Daten von Feiertagen müssen nicht berechnet werden, da sie - unabhängig vom Jahr - immer auf das gleiche Datum fallen. Die anderen sind jeweils von einem bestimmten Stichtag abhängig, dessen Datum zunächst berechnet werden muss.

Dabei gibt es zwei Stichtage: den vierten Advent und den Ostersonntag. Natürlich könnten Sie auch einen anderen Advent als den vierten und auch den Ostermontag statt des Ostersonntags berechnen - wichtig ist nur, dass Sie einen festen Tag verwenden, um die davon abhängigen Daten berechnen zu können.

Ermitteln des Datums des vierten Advents

Das Datum des vierten Advents kann jeder Mensch mit einem einfachen Kalender ermitteln. Man schaut einfach, auf welchen Tag der Heiligabend fällt, und wenn es sich bei dem Tag nicht um einen Sonntag handelt, fährt man mit dem Finger auf dem Kalender soweit zurück, bis man auf den vorherigen Sonntag stößt.

Genauso einfach funktioniert die VBA-Funktion aus Quellcode 1. Da Windows einen integrierten Kalender zur Verfügung stellt, müssen Sie der Funktion lediglich das Jahr, für das die Feiertage berechnet werden sollen, als Parameter übergeben.

Die erste Zeile der Funktion weist der Variablen VierterAdvent das aus dem 24. 12. und dem angegebenen Jahr zusammengesetzte Datum zu.

Anschließend wird eine Do While...Loop-Schleife solange durchlaufen, bis der Wochentag des in der Variablen VierterAdvent gespeicherten Datums ein Sonntag ist. Dabei wird der Wert der Variablen bei jedem Schleifendurchlauf um Eins und damit um einen Tag reduziert.

Natürlich kann es auch sein, dass der 24. 12. des angegebenen Jahres auf einen Sonntag fällt. In dem Fall wird die Schleife gar nicht durchlaufen, da die Abbruchbedingung direkt erfüllt ist.

Ermitteln des Datums des Ostersonntags

Die Berechnung des Datums, auf den der Ostersonntag fällt, ist wesentlich komplizierter. Sie stammt von Carl Friedrich Gauß (1777-1855). Da ihre Herleitung den Rahmen des vorliegenden Beitrags sprengen würde, nehmen Sie die entsprechende Funktion, die im Wesentlichen aus mathematischen Gleichungen besteht, einfach zur Kenntnis (s. Quellcode 2).

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:

Verwandte Beiträge:

Flexible Datumstextfelder

© 2003-2015 André Minhorst Alle Rechte vorbehalten.