Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: yes2002 am 07.10.03 - 11:24:48
-
Hi,
habe im Forum gesucht - aber nix passendes gefunden. Deshalb, wie kann ich den ersten Werktag eines Montas in Lotus Script ermitteln?
Beispiel:
01.11.2003 = Samstag -> weekday = 7 -> keine Aktion
02.11.2003 = Sonntag -> weekday = 1 -> kein Aktion
03.11.2003 = Montag -> weekday = 2 -> Aktion wird durchgeführt
04.11.2003 = Dienst -> weekday = 3, aber nicht erster Werktag des Monats, deswegen keine Aktion.
Hat jemand eine pfiffige Idee?
PS: Feiertage werden ignoriert.
Danke!
-
du hast doch selbst schon die Lösung gepostet.
du nimmst das Datum des ersten Tages eines Monats und zählst solange einen Tag dazu, bis es ein Werktag ist.
vielleicht gehts pfiffiger, aber nicht pragmatischer
-
... hmm, ja - aber ich wollte vermeiden das Datum zu zerlegen.
Komme ich wohl nicht herum?
-
Hi,
Du könntest doch mit einem Datum starten und dann Adjust immer einen Tag weiterzählen, bis Du den ersten Wochentag des Monats gefunden hast.
-
Ich glaube, das geht doch eleganter ?
Weekday (Monatserster) = x
x = 1 -> Diff = 0
sonst Diff = 8 - x
Diff muß jetzt zum Tag hinzugezählt werden, um den ersten Werktag zu finden.
1. Januar, 1. Mai = Montag usw. sind so aber nicht abzufangen.
Bernhard
-
Hi Bernhard,
Deine Formal versteh ich nicht richtig ???
Es ist doch
@Weekday(Sonntag) = 1
@Weekday(Samstag) = 6
also muesste es doch so sein:
_Diff :=
@If(
@Weekday(Monatserster) = 1;1;
@Weekday(Monatserster) = 1;2;
0
)
_ErsterWerktag := @Adjust(Monatserster;0;0;_Diff;0;0;0)
Andreas
-
Oh Mann, was hab' ich da für einen Schmarrn geschrieben... Wenn Montag = 1 WÄRE (sondern der Sonntag, was schon mal der erste Schwachfug von mir war), dann berechnet mein Blödsinn den ersten MONTAG im Monat.
Wollte aber gar keiner wissen - selbst ich nicht.
Völlig ohne Häme: Andreas' Formel muß noch an einer Stelle geändert werden.
_Diff :=
@If(
@Weekday(Monatserster) = 1;1;
@Weekday(Monatserster) = 2;2;
0
)
_ErsterWerktag := @Adjust(Monatserster;0;0;_Diff;0;0;0)
Ich geh' jetzt in die Ecke und schäme mich ;-(
Bernhard
-
Hallo,
Danke für die Tipps - ich werde wohl diese Variante verwenden:
If Day(Today) < 4 Then
'Überprüfung läuft nur, zwischen 1. und 3. eines Monats
If Day(Today) = 1 Then
If Weekday(Today) > 1 And Weekday(Today) < 7 Then
'Prüfen, ob der 1. ein Wochentag ist
'Aktion
End If
Else
If Weekday(Today) = 2 Then
'Prüfen, ob der 2. oder 3. ein Montag ist
'Aktion
End If
End If
End If
Grüße
-
Hi Bernhard,
danke für die Korrektur - mal wieder Copy-Paste.
Dadurch werden wohl 90% aller Fehler in Programmen erzeugt.
Andreas