Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: KiTaMann am 02.05.03 - 12:27:32

Titel: Stichtagsberechnungen
Beitrag von: KiTaMann am 02.05.03 - 12:27:32
Hallo zusammen,

ich möchte, dass die in meiner Tageseinrichtung registrierten Kinder automatisch ein errechnetes Abgangsdatum erhalten.

Also alle Kinder, die am 31.07. eines Jahres älter als 6 Jahre sind, sollen als potentielle Abgänger angesehen und das Feld "Abgangsdatum" automatisch ausgefüllt werden.

Ich habe zunächst das aktuelle Alter der Kinder berechnet, und zwar mit der Formel:

y:=@If ( @IsTime(gtag) ; @Year(@Today) - @Year(gtag); 0 ) ;
m:=@If ( @IsTime(gtag) ;@Month(@Today)-@Month(gtag);0);
d:=@If ( @IsTime(gtag) ;@Day(@Today)-@Day(gtag);0);
@If ( @IsTime(gtag) ;@Text(y+@If ( m < 0 ; -1 ; m > 0 ; 0 ; d < 0 ; -1 ; 0 ))+","+@Text(@If(m < 0;12 + m;m=0 & d < 0; 11; m)) ; "" )

im Feld "effalter".

Jetzt habe ich allerdings Schwierigkeiten, dieses berechnete Alter auf den Zeitpunkt anzupassen, an dem das jeweilige Kind zum angegebenen Stichtag "31.07." auch tatsächlich 6 Jahre alt ist.

Vielleich habe ich mich mit der o.a. Formel auch selbst ein wenig "schwindlig gespielt" und das Maifest steckt mir noch in den Knochen.

Hat jemand einen Lösungsvorschlag, mit dem ich weiterkomme?
Titel: Re:Stichtagsberechnungen
Beitrag von: Rob Green am 02.05.03 - 13:16:02
Du meinst

"bis spätestens zum 31.07. müssen die Kinder 6 Jahre alt sein, damit sie als Abgänger geflagged werden." ?

Dann würde ich rechnen...
Code
vStichtag:=@Date(2000; 7; 31);

vResult:=
@If(
@Month(vStichtag) > @Month(Feld_GT); @Year(@Today) - @Year(Feld_GT);
@If(@Day(vStichtag) > @Day(Feld_GT); (@Year(@Today) - @Year(Feld_GT)) - 1;@Year(@Today) - @Year(Feld_GT))
) ;

FIELD B2:=vResult;
void

Zuerst checked die Formel, ob der Monat vom Stichtag (immer "7") größer ist als der Geburtsmonat des Kindes.

Wenn ja, ist die Rechnung Jahr_Jetzt % Jahr_Geburtstag.

Wenn nein, ist die Rechnung Jahr_Jetzt % Jahr_Geburtstag % 1, wenn zusätzlich der Stichtag 31 größer als der Tag des Geburtstags des Kindes ist (zB der 22. ). Das trifft eigentlich immer zu, denn mehr als 31 geht ja nit. Doch zur Sicherheit ists ok.

Wenn als im GT Feld 03.03.97 steht, wird ins Feld "B2" = 6 ausgespuckt. Wenn im Feld GT 01.08.97 steht, wird ins Feld "B2" = 5 ausgegeben. Wenn im Feld GT 03.03.96 steht, kommt ins B2 = 7. Wenn im Feld GT 01.08.96 steht, kommt ins B2 = 6 rein.

Mit diesem Cut "6" oder nicht, kannste dann arbeiten, weil ganz verstanden hatte ich nicht, ob Du nun das Alter willst, oder das Geburtsdatum diesen Jahres  ;D ;D, wegen Deiner Aussage
Zitat
"Jetzt habe ich allerdings Schwierigkeiten, dieses berechnete Alter auf den Zeitpunkt anzupassen, an dem das jeweilige Kind zum angegebenen Stichtag "31.07." auch tatsächlich 6 Jahre alt ist."
Titel: Re:Stichtagsberechnungen
Beitrag von: KiTaMann am 02.05.03 - 14:24:28
Hast ja Recht und ich hab mich da wohl 'n bisschen blöd ausgedrückt.

Und Danke für die geniale Formel, sie rechnet mir aber nur das Alter zum bestimmten Stichtag aus.

Was ich tatsächlich benötige, kommt eigentlich aus der anderen Richtung, nämlich folgendes (bißchen Prosa):

Ein Kind kommt zur Anmeldung.

Nach Angabe des Geburtsdatum rechnet mir meine Formel das effektive Alter des Kindes aus.

Jetzt will ich, dass automatisch das voraussichtliche Abgangsdatum ausgerechnet wird.

Das ist immer der 31.07. und zwar der erste, an dem das Kind bereits 6 Jahre alt ist.
Titel: Re:Stichtagsberechnungen
Beitrag von: Rob Green am 02.05.03 - 14:50:06
ja ok, aber ich sehe nicht mehr, wo nun das Problem liegt, weil Du obige Formel mit dr Logik nun einfach umdrehen mußt.
Titel: Re:Stichtagsberechnungen
Beitrag von: KiTaMann am 02.05.03 - 14:59:25
Stimmt!

Also heute ist irgendwie überhaupt nicht mein Tag...

... vielleicht sollte man ja einfach schon mal Feierabend machen


Ich dank Dir vielmals!

Schönes Wochenende!


KiTaMann
Titel: Re:Stichtagsberechnungen
Beitrag von: Rob Green am 02.05.03 - 15:25:28
wenn Du am WE nicht draufkommen solltest, rechne einfach mit @adjust +6 Jahre zum GT dazu und dann die obige Formel wegen <31.07. oder >31.07. Vergleich. Viel Erfolg noch  :)