Jump to content
  • 0

Leeftijd berekenen


Manu

Question

Posted

Ik zit met een vraagje. In het personeelsbestand heb ik van iedereen de geboortedatum, en daaraan de verjaardag gekoppeld. BIj opstarten van Filemaker krijg ik dan een overzicht van iedereen die de volgende 7 dagen jarig is. Daarnaast staat dan nog een veldje waarin staat hoe oud iemand wordt, maar daar knelt het schoentje (zie scriptje hieronder)

 

"Year ( Get ( HuidigeDatum ) ) - Year ( Geb. datum ) - Case ( Get ( HuidigeDatum ) < Date ( Month ( Geb. datum ) ; Day ( Geb. datum ) ; Year ( Get ( HuidigeDatum ) ) ) ; 1 ; 0 )+1"

 

De berekening gaat goed tot de persoon vandaag jarig is. Dan wordt er al 1 jaar bijgedaan

 

BV : Persoon X is 23/4/1986 geboren - verjaardag 23/4/2011, wordt 25 jaar. Op 23/4/2011 gaat mijn veld echter al 26 geven.

 

Iemand enig idee hoe ik dit zou kunnen oplossen?

6 answers to this question

Recommended Posts

  • 0
Posted

If(Date(Month(geb datum);Day(geb datum);Year(Get(HuidigeDatum)))-Get(HuidigeDatum) <7;Year(Get(HuidigeDatum))-Year(geb datum)+1;Year(Get(HuidigeDatum))-Year(geb datum))

 

 

Vr gr,

Harry

  • 0
Posted

Bedankt voor de snelle reactie. Ben er dadelijk mee aan de slag gegaan. Maar ik denk dat er nog 1 klein foutje inzat. Als ik de berekening zo laat uitvoeren geeft hij voor iemand van 26/04/1968 aan dat die op 26/04/2011 44 jaar wordt. Haal je echter de "+1" erui, geeft hij wel een correcte berekening = 43 jaar

 

If(Date(Month(geb datum);Day(geb datum);Year(Get(HuidigeDatum)))-Get(HuidigeDatum) <7;Year(Get(HuidigeDatum))-Year(geb datum);Year(Get(HuidigeDatum))-Year(geb datum))

 

Ga het zo even testen en zien wat het geeft

 

Alvast nog een bedankt voor de hulp

  • 0
Posted

Ik kan het niet laten om hier toch even op te reageren.

 

FileMaker is niet zoals Excel. In FileMaker mag je formules leesbaar neerschrijven. Je mag ze uitspatieren, op verschillende regels zetten, van commentaar voorzien.

Onlangs moest ik iets in Excel doen, pure frustratie. Mijn formule was niet juist, maar Excel zou ze corrigeren. Vlam, al mijn spaties eruit, terug onleesbaar.

 

Ik gebruik engelstalige formules, maar volgens mij is deze formule toch beter leesbaar en onderhoudbaar:

Let (
[
theBirthday = Date ( 4 ; 23 ; 1954 ) ; // de datum die je test
theRefDate = Get ( CurrentDate ) ;  // vandaag
myBreakDate = Date ( Month ( theBirthday ) ; Day ( theBirthDay ) ; Year ( theRefDate ) ) ; // wanneer de verjaardag dit jaar valt
myYearDifference = Year ( theRefDate ) - Year ( theBirthDay ) ; // het verschil in jaren
myCorrection = GetAsNumber ( myBreakDate > theRefDate ) // als de verjaardag na vandaag valt dit jaar, moeten we corrigeren
] ;

myYearDifference - myCorrection

)

 

Deze formule is zo goed als ongetest, en zou een fout kunnen bevatten, maar ze is systematisch opgebouwd, en zal indien nodig zonder veel probleem verbeterd kunnen worden.

Mijn bijdrage aan deze korte thread is dus goeie raad: gebruik de Let() functie om je logica stilaan op te bouwen, en commentarieer.

 

Wie kijkt naar de namen van de formule-variabelen, ziet dat ik mijn parameters eerst neerzet, dat zijn de variabelen/objecten die beginnen met "the". De tussenresultaten-variabelen beginnen met "my".

Deze formule zal daardoor ook heel gemakkelijk kunnen omgezet worden naar een custom functie:

CF_Leeftijd ( theBirthDay ; theRefDate )

Gewoon 2 lijnen uitcommenten.

 

Als je met FileMaker Pro Advanced werkt, kan je op die manier eerst de formule uittesten in je Data Viewer, en er daarna een custom functie van maken.

Als je de formule wil debuggen, kan je de lijn met het resultaat uitcommenten, en een tussenresultaat erboven zetten.

  • 0
Posted

Is weer even geleden dat dit onderwerp ter sprake kwam en Peter een mogelijke oplossing bood. Ik heb die berekening ondertussen al een tijdje getest, naast de andere berekening en blijkbaar werkt die ook zoals het hoort

 

Nogmaals bedankt

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...