aaa Posted March 2, 2011 Share Posted March 2, 2011 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! Link to comment Share on other sites More sharing options...
peranders Posted March 2, 2011 Share Posted March 2, 2011 http://www.99.se/filemaker/243448-fodelsedagar-i-kalender.html Kan det vara nåt? 10 sekunder i Google med "personnummer filemaker ålder" Link to comment Share on other sites More sharing options...
aaa Posted March 2, 2011 Author Share Posted March 2, 2011 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. Link to comment Share on other sites More sharing options...
Hetlund Posted March 3, 2011 Share Posted March 3, 2011 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? Link to comment Share on other sites More sharing options...
peranders Posted March 3, 2011 Share Posted March 3, 2011 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. Link to comment Share on other sites More sharing options...
iMatte v. 2.0 Posted March 3, 2011 Share Posted March 3, 2011 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 ) Link to comment Share on other sites More sharing options...
aaa Posted March 4, 2011 Author Share Posted March 4, 2011 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! Link to comment Share on other sites More sharing options...
aaa Posted March 4, 2011 Author Share Posted March 4, 2011 Jag förstår inte varför vissa får negativ ålder (19410519-00 = -31 år) Link to comment Share on other sites More sharing options...
TobiG Posted March 20, 2011 Share Posted March 20, 2011 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! Link to comment Share on other sites More sharing options...
iMatte v. 2.0 Posted March 20, 2011 Share Posted March 20, 2011 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.