Feiertage berechnen und berücksichtigen - Teil 2
Prüfen, ob ein Datum ein Feiertag ist
Nun benötigen Sie noch eine Methode die prüft, ob ein gegebenes Datum ein Feiertag ist. Dazu müssen die beiden Methoden aufgerufen werden, mit denen Sie ein Datum auf einen festen oder berechneten Feiertag prüfen.
Da Sie zur Prüfung mit der Methode FixFeiertag den Namen und Pfad der Textdatei übergeben müssen, ist es sinnvoll, diesen Parameter in der Methode Feiertag als optional zu definieren. Berücksichtigen Sie dabei, dass der gleiche Tag sowohl ein berechneter, variabler Feiertag wie auch ein fester Feiertag sein kann. Das heißt, es könnte sein, dass beide Methoden einen Feiertag zurückgeben, sodass Sie die Rückgabewerte beider Methoden aneinander hängen sollten. Ein gutes Beispiel dafür ist Heiligabend 2006. Der fällt auf einen Sonntag und ist damit identisch mit dem berechneten 4. Advent.
Public Function Feiertag(datDatum As Date, Optional strDateiname) As String
Dim strFTagname As String
strFTagname = ""
If IsDate(datDatum) Then
'Prüfen, ob es sich um einen variablen Feiertag handelt
If IstFeiertag(datDatum, strFTagname) = True Then
Feiertag = strFTagname
End If
'Prüfen, ob es ein fixer Feiertag ist
If Not (IsMissing(strDateiname)) Then
Feiertag = Feiertag & " " & FixFeiertag(datDatum, CStr(strDateiname))
End If
Feiertag = Trim(Feiertag)
End If
End Function
Hilfsmethoden
Es ist für den Benutzer der Klasse nicht gerade günstig, wenn er den Namen und den Pfad der Textdatei immer mit angeben muss, zumal ja der Pfad der Textdatei auf dem Zielrechner von dem auf dem Rechner des Entwicklers abweichen kann. Daher stellt die Klasse zusätzliche Methoden zur Verfügung, mit denen Sie den Pfad der Datenbank ermitteln können, einen Pfad und einen Dateinamen zu einer kompletten Verzeichnisangabe zusammensetzen und prüfen können, ob eine Datei vorhanden ist. Die Rückgabewerte dieser Methoden können dann bequem an die anderen Methoden übergeben werden. Auf diese Weise sind Pfade zur Textdatei möglich, die relativ zum Pfad der Datenbank angegeben werden.
ublic Function buildPath(strPfad As String, _
strName As String) As String
If Right(strPfad, 1) = "\" Then
strPfad = Mid(strPfad, 1, Len(strPfad) - 1)
End If
If Left(strName, 1) = "\" Then
strName = Mid(strName, 2)
End If
buildPath = strPfad & "\" & strName
End Function
Public Function fileExists(strDatei As String)
If Dir(strDatei) <> "" Then
fileExists = True
Else
fileExists = False
End If
End Function
Public Function getPfad() As String
If Application.Name = "Microsoft Access" Then
getPfad = Left(CurrentDb.Name, Len(CurrentDb.Name) - _
Len(Dir(CurrentDb.Name)))
ElseIf Application.Name = "Microsoft Word" Then
getPfad = ThisDocument.Path
ElseIf Application.Excel = "Microsoft Excel" Then
getPfad = Thisworkbook.Path
Else
getPfad = ""
End If
End Function