Gå till innehåll
Just nu i M3-nätverket

Personnummer till ålder i Filemaker Pro


aaa

Rekommendera Poster

Jag skulle behöva hjälp med att få personnummer (ÅÅÅÅMMDD-0000) till ålder. Har slitit mitt hår och inte kommit fram till någon lösning. Förstår att jag måste ta bort de sista fyra och sedan lägga till / mellan årtal, månad och dag, men det är lättare sagt än gjort.

 

Tack på förhand!

Länk till kommentar
Dela på andra webbplatser

http://www.99.se/filemaker/243448-fodelsedagar-i-kalender.html Kan det vara nåt?

 

10 sekunder i Google med "personnummer filemaker ålder"

 

Tack och bock.

 

Känner till den tråden och den ger mig nada eftersom jag måste fråga några saker. Bla hur man från personnummer ÅÅÅÅMMDD-0000 till ÅÅÅÅ/MM/DD

 

Har försökt signa upp där några gånger men mer krångligt sätt att göra det på finns inte (skiter sig eftersom man bor utomlands). Jag hatar 99mac.

 

Någon som har ett relevant svar utan att säga sök på google.

Länk till kommentar
Dela på andra webbplatser

Jag orkade inte riktigt läsa hela inlägget på Mac99. Formler är inte riktigt min sak.

 

Det fanns en tråd här på Forum för lite sedan om att räkna ut ålder utifrån födelsedatum i Excel. Kanske kan ge lite inspiration, trots att det är ett helt annat program.

 

En möjlighet att bli av med "de fyra sista siffrorna" vore väl att ha två inmatningsfält: ett för födelsedatum och ett för de fyra sista siffrorna. Och ett litet skript som gör att man hoppar direkt från "födelsedatum" till "fyra sista siffror"? Men då måste du kanske göra om hela din databas?

Länk till kommentar
Dela på andra webbplatser

Har du testat exemplet i inlägget jag tipsade dig om?

 

Det du måste använda är strängmanipuleringsfunktioner. Du får jobba i flera steg med att markera position och därefter infoga tecken.

Länk till kommentar
Dela på andra webbplatser

iMatte v. 2.0

Tack och bock.

 

Känner till den tråden och den ger mig nada eftersom jag måste fråga några saker. Bla hur man från personnummer ÅÅÅÅMMDD-0000 till ÅÅÅÅ/MM/DD

 

Har försökt signa upp där några gånger men mer krångligt sätt att göra det på finns inte (skiter sig eftersom man bor utomlands). Jag hatar 99mac.

 

Någon som har ett relevant svar utan att säga sök på google.

 

Ok, vi tar det steg för steg:

 

1) Skapa tre olika fält:

 

a ) personnummer (typ Text) Personnummer måste skrivas in i formen "19721224-3455" för att fungera i formlerna nedan.

b ) födelsedatum (Typ Beräkning). Detta fält behöver inte synas i databaslösningen sedan, men det behövs för beräkningssteget. I formelfältet kopierar/klistrar du in följande:

Middle ( personnummer ; 3 ; 2 )&"-"&Middle ( personnummer ; 5 ; 2 )&"-"&Middle ( personnummer ; 7 ; 2 )

Beräkningsresultat ska vara i formatet "Datum" - anges vid sidan av formelfältet.

 

c ) ålder (Typ Beräkning) Kopiera in följande i formelfältet:

GetAsText ( Year ( Get ( AktuelltDatum ) )  - Year ( födelsedatum ) - If ( Get ( AktuelltDatum ) <  Date ( Month ( födelsedatum ) ; Day ( födelsedatum ) ; Year ( Get ( AktuelltDatum ) ) ) ; 1 ; 0 ) ) & " År, " & GetAsText ( Mod ( Month ( Get ( AktuelltDatum ) ) - Month ( födelsedatum ) + 12 - If ( Day ( Get ( AktuelltDatum ) ) < Day ( födelsedatum ) ; 1 ; 0 ) ; 12 ) ) & " månader, " & GetAsText ( Day ( Get ( AktuelltDatum ) ) - Day ( födelsedatum )  + If ( Day ( Get ( AktuelltDatum ) )  ≥ Day ( födelsedatum ); 0 ; If ( Day ( Get ( AktuelltDatum ) - Day ( Get ( AktuelltDatum ) ) ) < Day ( födelsedatum ) ; Day ( födelsedatum ) ; Day ( Get ( AktuelltDatum ) - Day ( Get ( AktuelltDatum ) ) ) ) ) ) & " dagar "

Beräkningsresultat ska vara i formatet "Text" - anges vid sidan av formelfältet.

 

Jag har testat och det fungerar bra. Kom ihåg att om du vill ha andra namn på fälten än i mitt exempel så måste du ändra dem konsekvent i alla formler

 

Tillägg: Om du vill ha personnumret i formatet "721224-3455" i stället så kör denna kod i formelfältet för fältet "födelsedatum" i stället:

Middle ( personnummer ; 1 ; 2 )&"-"&Middle ( personnummer ; 3 ; 2 )&"-"&Middle ( personnummer ; 5 ; 2 )

Länk till kommentar
Dela på andra webbplatser

Ok, vi tar det steg för steg:

 

1) Skapa tre olika fält:

 

a ) personnummer (typ Text) Personnummer måste skrivas in i formen "19721224-3455" för att fungera i formlerna nedan.

b ) födelsedatum (Typ Beräkning). Detta fält behöver inte synas i databaslösningen sedan, men det behövs för beräkningssteget. I formelfältet kopierar/klistrar du in följande:

Middle ( personnummer ; 3 ; 2 )&"-"&Middle ( personnummer ; 5 ; 2 )&"-"&Middle ( personnummer ; 7 ; 2 )

Beräkningsresultat ska vara i formatet "Datum" - anges vid sidan av formelfältet.

 

c ) ålder (Typ Beräkning) Kopiera in följande i formelfältet:

GetAsText ( Year ( Get ( AktuelltDatum ) )  - Year ( födelsedatum ) - If ( Get ( AktuelltDatum ) <  Date ( Month ( födelsedatum ) ; Day ( födelsedatum ) ; Year ( Get ( AktuelltDatum ) ) ) ; 1 ; 0 ) ) & " År, " & GetAsText ( Mod ( Month ( Get ( AktuelltDatum ) ) - Month ( födelsedatum ) + 12 - If ( Day ( Get ( AktuelltDatum ) ) < Day ( födelsedatum ) ; 1 ; 0 ) ; 12 ) ) & " månader, " & GetAsText ( Day ( Get ( AktuelltDatum ) ) - Day ( födelsedatum )  + If ( Day ( Get ( AktuelltDatum ) )  ≥ Day ( födelsedatum ); 0 ; If ( Day ( Get ( AktuelltDatum ) - Day ( Get ( AktuelltDatum ) ) ) < Day ( födelsedatum ) ; Day ( födelsedatum ) ; Day ( Get ( AktuelltDatum ) - Day ( Get ( AktuelltDatum ) ) ) ) ) ) & " dagar "

Beräkningsresultat ska vara i formatet "Text" - anges vid sidan av formelfältet.

 

Jag har testat och det fungerar bra. Kom ihåg att om du vill ha andra namn på fälten än i mitt exempel så måste du ändra dem konsekvent i alla formler

 

Tillägg: Om du vill ha personnumret i formatet "721224-3455" i stället så kör denna kod i formelfältet för fältet "födelsedatum" i stället:

Middle ( personnummer ; 1 ; 2 )&"-"&Middle ( personnummer ; 3 ; 2 )&"-"&Middle ( personnummer ; 5 ; 2 )

 

 

Tackar många gånger om!

Länk till kommentar
Dela på andra webbplatser

Jag förstår inte varför vissa får negativ ålder (19410519-00 = -31 år)

Länk till kommentar
Dela på andra webbplatser

  • 3 weeks later...

Tack för tipsen som även jag haft nytta av!

 

Tyvärr fick jag också problem med negativa åldrar i databasen. Det löste jag genom att mata in personnumren med 12 siffror (dvs 19 eller 20 framför) samt ändrade personnummersformeln till:

 

Middle ( personnummer ; 1 ; 4 )&"-"&Middle ( personnnummer ; 5 ; 2 )&"-"&Middle ( personnummer ; 7 ; 2 )

 

Hoppas det kommer till nytta!

Länk till kommentar
Dela på andra webbplatser

iMatte v. 2.0

Jag förstår inte varför vissa får negativ ålder (19410519-00 = -31 år)

 

Ledsen att jag missade att följa upp detta. Problemet verkar vara att Filemaker tolkar årtalet som tillhörande 1900-talet ned till 420101 och som tillhörande 2000-talet från 411231 och tidigare. Hittar inget i dokumentationen om detta, men lösningen som TobiG presenterar löser ju problemet.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...