Autor Thema: Termin berechnen aufgrund eines Datums und ausgewähltem Wochentag  (Gelesen 3018 mal)

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
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
« Letzte Änderung: 03.08.12 - 09:45:23 von cebolina »
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
@Peter Klett: Perfekt  (wie immer ;-))
ErrorHandling ist klar.

Vielen Dank für die Unterstützung (auch an Bernhard und Eknori)

Gruß Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz