Domino 9 und frühere Versionen > ND8: Entwicklung

Alter von Personen berechnen - Fehler im persönlichen Notesadressbuch ?

<< < (3/4) > >>

Peter Klett:

--- Zitat von: udo187 am 28.02.13 - 07:32:57 ---...
Was mir eigentlich nicht klar ist, ist der Fehler der Datumsberechnung im persönlichen Adressbuch.

Die hinterlegte Formel lautet:

nowMonth := @Month(@Today);
bdayMonth := @Month(Birthday);
getbday := @If(nowMonth < bdayMonth; (@Year(@Today) - @Year(birthday)) -1;  @Year(@Today) - @Year(birthday));


Warum wird der aktuelle Tag nicht mit dem Tag des Geburtstages verglichen ?
...
--- Ende Zitat ---

Weil das von IBM kommt und die solche Sachen vermutlich nur von Praktikanten machen lassen, die spätestens, nachdem sie angefangen haben, etwas zu verstehen, ausgetauscht werden?  >:D

Aber im Ernst:

Ich würde mir keinen Kopf darüber machen, warum etwas falsch gemacht wurde. Du hast den Fehler gefunden und könntest, wenn Du daran herumschrauben willst (mit allen Nachteilen, die das mit sich bringen kann), das ändern, oder es akzeptieren. Schau Dir mal die Diskussionen hier im Forum über die Qualität der Maildatenbank an.

Aber das ist kein alleiniges Problem von IBM. Es gibt keine fehlerfreie Software, und wird es m.E. auch nie geben können. Bei Notes kann man aber hineinschauen und sehen, wie blöd - oder peinlich - manche Dinge gelöst (bzw. nicht gelöst) wurden (und Du kannst es selbst ändern), das kann man bei Microsoft oder anderen Anbietern so nicht, und die sind alle weit weg von Fehlerfreiheit.

udo187:
Hallo Peter !

Danke für deine Erläuterung, ich bin auch Deiner Meinung.
Wer frei von Fehler ist werfe den ersten Stein  ;)

Gruß
Udo

udo187:
Hallo !

Zur Info: Was mir heute bei der oben angegebenen Formel für die Altersberechnung noch aufgefallten ist:
Wenn jemand in einem Schaltjahr am 29.02. Geburtstag hat, wird das Alter im Februar falsch (um 1 Jahr zuviel) berechnet:

z.B. Geburtstag 29.02.1964

@If ( @Date ( @Year ( _AktDatum ); @Month( _AmGeb);@Day ( _AmGeb)) > _AktDatum ; _Alter - 1 ; _Alter );

Weil: @Date(2013;02;29) gibts nicht und gibt daher "" zurück ->
@If gibt dann die zweite Bedingung zurück.


Gruß
Udo

koehlerbv:
Au weia! Udo, Du hast natürlich vollkommen wahr!

Korrekt(er) wäre die Formel also wie folgt:

--- Code: ---_Age1 := @Year (Actdate) - @Year (Birthday);
Age2 := @If (@Adjust (@Date (@Year (ActDate); @Month (Birthday); 1); 0; 0; @Day (Birthday) - 1; 0; 0; 0) > ActDate; _Age1 - 1; _Age1);

@Prompt ([Ok]; "Age"; @Text (Age2))
--- Ende Code ---

Das ist auch insofern eine böse Falle, da Datenumber (2013, 2, 29) liefert hingegen (korrekt) den 01.03.2013.

Bernhard

udo187:
ja, und dieser kleine "Fehler" ist mir auch nur aufgefallen weil ich auch einen Export mittels Skript durchführe und beim "zufälligen" Vergleich der Ansicht und des Exportes hatte ich eine Differenz von einem Jahr. (weil Datenumber eben korrekt rechnet)...

Bist Du heuer wieder beim Entwicklercamp vertreten ?

LG
Udo




Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln