Laget nylig et skjema som skulle brukes av barnehagene. Saksbehandlerne ville at det i skjemaet skulle fylles ut barnets fødselsnummer, alder og om barnet er gutt eller jente. Jeg tenkte det var unødvendig med tre felt å fylle ut, i og med at fødselsnummeret allerede inneholder informasjon om alder og kjønn.
Jeg finner ikke mange tilsvarende tips rundt fødselsnummer her på community så jeg deler min løsning.
For å liste ut om dette er en gutt eller jente laget jeg denne funksjonen:
var JG = substr (Fodselsnummer, 8, 1);
if (JG==“0” || JG==“2” || JG==“4” || JG==“6” || JG==“8”) { return “Jente”; };
if (JG==“1” || JG==“3” || JG==“5” || JG==“7” || JG==“9”) { return “Gutt”; };
Den nederst linjen kunne ha vært else {return “Gutt”;}; - men da vil det stå Gutt i tekstfeltet før en fyller inn fødselsnummeret. Jeg vil at det skal være blankt.
Når det gjelder alder på barn har det betydning om de nettopp har fylt år eller om de snart fyller år, så formelen tar med måned de er født i. Denne ønsket jeg også skulle ta hensyn til om vedkommende er født før eller etter århundreskiftet fordi jeg tenkte å bruke tilsvarende i andre skjema.
var Vmm = substr (Fodselsnummer, 2, 2);
var Nmm = getmonth(now());
var Vyy = substr (Fodselsnummer, 4, 2);
var Nyy = getyear(now());
var age = 0;
if (Vyy > 30) { age = Nyy - (Vyy + 1900); }; else { age = Nyy - (Vyy + 2000); };
if ( Vmm < Nmm ) {return age + " " + "år og " + ( Nmm - Vmm ) + " " + “måneder”; };
if ( Vmm == Nmm ) {return age + " " + “år” ; };
if ( Vmm > Nmm ) {return ( age - 1 ) + " " + "år og " + ( 12 - Vmm + Nmm ) + " " + “måneder”; };
Her brukte jeg årstallet 30 som skille (etter 1930 og før 2030), en kan bruke 25 men da må en huske i formelen å bytte til 26 neste år. Jeg burde nok lagt inn noe som kan korrigere for de som er født før 1930 - de “mister noen år” i skjemaet.
En ting har jeg ikke funnet ut av. I tekstfeltet alder (som er = funksjonen) står det “24 år og 6 måneder” før man fyller ut feltet fødselsnummeret. Ikke helt perfekt.
Formlene kan sikkert skrives litt enklere og mer elegant, men de virker ok i mitt skjema.