FileMaker Tip 393

Rekenen met tijden (2)

 

Deze week kregen we een vraag over rekenen met tijden:

"Ik heb twee velden: Begin Dienst (tijd) en Einde dienst (tijd). Aan de hand van deze twee velden wil ik de gepresteerde uren berekenen.

Op zich niets mis mee: (Gepresteerde uren = Einde dienst - Begin dienst) en ik krijg de gewenste uitkomst.

Ik krijg echter niet de gewenste uitkomst als Einde dienst over middernacht gaat (bijvoorbeeld Begin dienst met waarde 13:00 en Einde dienst met waarde 02:00). In dat geval krijg ik een verkeerde uitkomst. Hoe kan ik dit oplossen?"

In ons antwoord gaan we ervan uit dat er drie verschillende mogelijkheden zijn*. Daarom gebruiken we de Case-functie (die we al uitlegden in Tip 21 en in Tip 74). Voor alle duidelijkheid zetten we begin en einde van de functie op aparte regels en voorzien we telkens één regel voor de voorwaarde en voor de formule.

Case(

IsEmpty(Begin Dienst) and not IsEmpty(Einde Dienst);
Einde Dienst;

not IsEmpty(Begin Dienst) and not IsEmpty(Einde Dienst) and GetAsNumber(Einde Dienst) > GetAsNumber(Begin Dienst);
Einde Dienst - Begin Dienst;

not IsEmpty(Begin Dienst) and not IsEmpty(Einde Dienst) and GetAsNumber(Einde Dienst) < GetAsNumber(Begin Dienst);
Time(24;0;0) - Begin Dienst + Einde Dienst

)

Zie ook: Tip 79.

PS - Er is heel snel een reactie gekomen op deze tip.


* En dat er slechts één middernachtsoverschrijding is zodat de gepresteerde uren nooit over meer dan twee dagen gespreid liggen.

 

Terug naar het selectiemenu voor de tips.