window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Feiertage verwalten, Teil 1

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

Wenn Sie in einer Datenbank jegliche Datumsangaben oder Zeiträume verwalten, die irgendwie durch die Anwesenheit von Feiertagen beeinflusst werden, sollten Sie diese Feiertage in einer Tabelle bereithalten oder diese schnell per VBA berechnen können. Dabei kann es sich etwa um die Berechnung von Fristen handel (Rückgabe innerhalb von 7 Werktagen) oder auch um die Ermittlung der Urlaubstage für den durch zwei Datumsangaben festgelegten Zeitraum. Diese Artikelreihe zeigt, wie Sie die Basisdaten verwalten und daraus die tatsächlichen Feiertage in einem vorgegebenen Zeitraum ermitteln.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1301_FeiertageErmitteln.mdb.

Feiertage

Es gibt verschiedene Arten von Feiertagen:

  • solche, die immer auf das gleiche Datum fallen (Weihnachten, Silvester, Tag der Arbeit, Tag der deutschen Einheit) und
  • solche, die immer auf einen bestimmten Wochentag fallen, aber kein festes Datum haben. Diese teilen sich wiederum in zwei Gruppen auf: Die ersten haben einen bestimmten Abstand zum Ostersonntag (Osterfeiertage, Christi Himmelfahrt, Fronleichnam), die zweiten zum vierten Advent (Weihnachten, Buß- und Bettag).

Außerdem werden einige Feiertage nicht in allen, sondern nur in bestimmten Bundesländern gefeiert.

Tabelle oder dynamisch

Die Ermittlung von Feiertagen kann auf zwei Arten erfolgen – dynamisch zur Laufzeit, also mit einer geeigneten VBA-Prozedur, oder durch das Speichern der Feiertage in einer Tabelle und anschließendes Ermitteln der Feiertage. Wenn wir schon mit Access arbeiten, nutzen wir natürlich die Variante mit der Tabelle. Mit dieser Tabelle lässt sich anschließend leicht ermitteln, ob und wieviele Feiertage sich in einem bestimmten Zeitraum befinden.

Basistabellen

Wir wissen nun, dass Feiertage bestimmte Eigenschaften haben. Um die Feiertagsdaten für einen Zeitraum zu ermitteln, benötigen wir einen Satz grundlegender Informationen, die wir – der Natur von Access entsprechend – in Tabellen speichern. Wir wissen, dass Feiertage teils ein festes Datum haben und teils von anderen Feiertagen abhängen. Deshalb speichern wir die grundlegenden Informationen in einem Satz von Tabellen. Die erste legt fest, welche Arten von Feiertagen es gibt – mit fixem Datum, von Ostern abhängige oder vom vierten Advent abhängige. Diese drei Varianten speichern wir in einer Tabelle namens tblFeiertagsarten, die im Entwurf wie in Bild 1 aussieht.

Tabelle der Feiertagsarten in der Entwurfsansicht

Bild 1: Tabelle der Feiertagsarten in der Entwurfsansicht

Gefüllt sieht die Tabelle wie in Bild 2 aus. Was machen wir mit dieser Tabelle Wir verwenden sie als Lookup-Tabelle für eine weitere Tabelle mit den eigentlichen Basisdaten der einzelnen Feiertage. Diese heißt tblFeiertageBasis und sieht im Entwurf wie in Bild 3 aus.

Tabelle der Feiertag-Basisdaten in der Entwurfsansicht

Bild 2: Tabelle der Feiertag-Basisdaten in der Entwurfsansicht

Tabelle der Feiertagsarten mit allen Werten

Bild 3: Tabelle der Feiertagsarten mit allen Werten

In dieser Tabelle finden Sie Daten wie in Bild 4. Zu jedem Feiertag speichert die Tabelle

Tabelle der Feiertag-Basisdaten in der Datenblattansicht

Bild 4: Tabelle der Feiertag-Basisdaten in der Datenblattansicht

  • die Bezeichnung,
  • den Tag und den Monat (für fixe Feiertage, sonst den Wert 0),
  • die Anzahl der Tage bis zum Stichtag, sollte es sich nicht um einen fixen Feiertag handeln und
  • die Art des Feiertags.

Was fehlt Die Zuordnung der Feiertage zu den Bundesländern. Wie speichern wir diese Information in Tabellen Es gibt n Feiertage und m Bundesländer, von denen jeder Feiertag einem oder mehreren Bundesländern zugeordnet werden soll. Das hört sich nach einer klassischen m:n-Beziehung an – und so ist es auch. Die eine Tabelle der m:n-Beziehung haben wir schon – die Tabelle tblFeiertageBasis. Fehlt noch die Tabelle mit den Bundesländern und die Tabelle für die Verknüpfung der Bundesländer mit den Feiertagen.

Die Tabelle zum Speichern der Bundesländer besteht lediglich aus den beiden Feldern BundeslandID und Bundesland. Interessanter ist die Tabelle zum Herstellen der Verknüpfung zwischen Feiertagen und Bundesländern. Sie heißt tblFeiertageBundeslaender und enthält drei Felder: das Primärschlüsselfeld FeiertagBundeslandID, das Fremdschlüsselfeld FeiertagID und das Fremdschlüsselfeld BundeslandID.

Beide Felder legen Sie als Nachschlagefelder aus. Das Feld FeiertagID bezieht die Werte des Nachschlagefeldes aus den Feldern FeiertagBasisID und Feiertag der Tabelle tblFeiertageBasis, die Schlüsselspalte FeiertagBasisID soll ausgeblendet werden. Auf diese Weise zeigt das Nachschlagefeld nur die Bezeichnungen der Feiertage an.

Das Feld BundeslandID ist ähnlich aufgebaut: Es verwendet die Felder BundeslandID und Bundesland der Tabelle tblBundeslaender zum Füllen des Nachschlagefeldes. Auch hier wird die Schlüsselspalte nicht angezeigt.

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