Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: cebolina am 11.04.12 - 13:16:36
-
Hallo zusammen,
ich habe ein sortiertes Mehrfachfeld "Intervall" (Date/Time) mit diesen Werten:
15.02.2012
20.05.2012
25.06.2012
10.07.2012
Die Anforderung ist, im Querysave mittels Script anhand eines Vergleichsdatums (Date/Time), den nächsten Fälligkeitstermin zu berechnen.
Beispiel 1:
Vergleichsdatum = 30.05.2012
Soll-Ergebnis = 25.06.2012
Liegt das Vergleichsdatum aber nach dem letzten Datum der Liste, muss das Ergebnis der nächste Termin im Folgejahr sein.
Beispiel 2:
Vergleichsdatum = 01.08.2012
Soll-Ergebnis = 15.02.2013
Beispiel 3:
Vergleichsdatum = 20.02.2013
Soll-Ergebnis = 20.05.2013
Die Jahreszahlen in der Datumsliste spielen also eigentlich keine Rolle. Ich brauche immer das nächste Datum in Abhängigkeit zu einem Vergleichsdatum.
Wie geht das in Script?
Kann mir bitte jemand den Weg zeigen?
Danke und Gruß
Stefan
-
Hier wird Dir nichts bleiben, als durch Deine Liste zu loopen und zu schauen, ob das gerade gefundene Listenelement grösser ist als Dein Vergleichsdatum.
Wenn ja - Treffer, Ende.
Kommst Du mit traurigem Blick aus der Schleife heraus, musst Du dies wiederholen und dabei vor dem Vergleich die Listenwerte um 1 Jahr erhöhen.
- unsauber: Einfach Listenwert + 365 (könnte ja reichen ;D)
- sauber: Listenwert mit Day, Month, Year + 1 und Datenumber umbauen.
HTH,
Bernhard
PS: Das ganze dann natürlich in eine Funktion mit Parameter, ob Du mit dem Jahr der Listenwerte arbeiten möchtest oder um x Jahre erhöht.
-
Hallo Bernhard,
würde es nicht reichen, die Jahreszahlen meiner Datumsliste durch die Jahreszahl des Vergleichsdatums zu ersetzen?
Wenn ja, wie?
Dann über die Elemente der neuen Liste loopen, bis das gerade gefundene Listenelement größer ist als das Vergleichsdatum.
Gruß Stefan
-
Das ist eine andere Möglichkeit - ich wusste nicht, dass Du die Liste verändern darfst.
Entweder, Du gehst den umständlichen Weg über NotesDateTime und AdjustYear, oder Du nimmst einen Einzeiler mit Datenumber (Year + 1, Month, Day).
Bernhard
-
Hallo Bernhard,
ich habe es nach deinem ersten Ansatz umgesetzt.
Ich übergebe einer Function die Datumsliste, das Vergleichsdatum und einen Zähler.
Die Function vergleicht in einer Schleife jedes Element der Liste mit dem Vergleichsdatum.
Habe ich kein Ergebnis, wird die Function mit Zähler = 1 erneut aufgerufen (der Zähler erhöht die Jahreszahl der Liste).
Das mache ich solange, bis ich ein Ergebnis bekomme.
Danke und Gruß
Stefan