Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: cebolina am 02.08.12 - 17:57:20
-
Hallo,
ich brauch mal wieder einen Tipp.
Ich habe ein Feld "Wochentage" (Typ: Kontrollkästchen) mit diesen Auswahlwerten:
Sonntag | 1
Montag | 2
Dienstag | 3
Mittwoch | 4
Donnerstag | 5
Freitag | 6
Samstag | 7
Ich habe ein weiteres Feld "Datum" (Typ: Date/Time, Bearbeitbar).
Abhängig von diesem Datum will ich im Querysave das "nächste Datum" berechnen und in das Feld "Termin" (Typ: Date/Time) schreiben.
Beispiel 1:
Wochentage = "2" : "4" : "7" (Montag, Mittwoch, Samstag)
Datum = 02.08.2012 (Donnerstag)
Termin = 04.08.2012 (Samstag)
Beispiel 2:
Wochentage = "3" (Dienstag)
Datum = 02.08.2012 (Donnerstag)
Termin = 07.08.2012 (Dienstag)
Beispiel 3:
Wochentage = "6" (Freitag)
Datum = 02.08.2012 (Donnerstag)
Termin = 03.08.2012 (Freitag)
Mit der Berechnung von "Termin" aufgrund der gewählten Wochentage in Abhängigkeit des Datums tue ich mir schwer. Wäre nett, wenn mir jemand einen Ansatz liefern könnte.
Danke und Gruß
Stefan
-
Dim termin As Variant
termin = doc.Datum (0)
Do
termin = termin + 1
Forall wt in doc.Wochentage
If Weekday (termin) = Cint (wt) Then
Exit Do
End If
End Forall
Loop
doc.Termin = termin
Noch ein bißchen Errorhandling drum rum (Wochentag darf nicht leer sein), dann sollte das tun
-
Für das Beispiel eins noch:
Vor Peters Schleife ermittelst Du, ob Ubound (Wochentage) > 0 ist. Wenn nicht: wt ist Cint (Wochentag).
Wenn nicht:
Das Array Wochentage durchlaufen, wenn Wochentage (Schleifenvariable) > Weekday (Datum), dann wt darauf setzen, sonst weiter.
Ist am Ende wt leer, dann ist wt = Weekday (Wochentage (0)).
Man kann das ganze noch "eleganter" machen (wenn Weekday (Datum) < wt, dann Termin = Datum + (wt - Weekday (Datum)), sonst Termin = Datum + (7 - Weekday (Datum)) + wt), aber für die Laufzeit gewinnst Du da nix.
HTH,
Bernhard
-
Meinst du sowas hier: http://www.eknori.de/2007-06-10/adjust-datetime-to-next-business-day/ u. http://www.eknori.de/2007-06-16/adjust-datetime-to-next-business-day-part-ii/ ?
-
@Peter Klett: Perfekt (wie immer ;-))
ErrorHandling ist klar.
Vielen Dank für die Unterstützung (auch an Bernhard und Eknori)
Gruß Stefan