2007

Feb

1

Av

Ibland krävs det att ett register innehåller personuppgifter inklusive personnummer. Ett personnummer består av födelsedatum följt av tre siffror samt en kontrollsiffra. Kontrollsiffran måste vara rätt för att personnumret ska vara giltigt och det kan FileMaker hjälpa till att beräkna.

Kontrollsiffran beräknas genom att växelvis multiplicera varje siffra i personnumret med 1 eller 2, lägga ihop siffersumman och ta heltalsdelen som resultat. Lägg in en kontrollberäkning på fältet som innehåller personnumret som ser ut så här:

(Length(Personnummer) = 11) and
(Middle(Personnummer;7;1) = "-") and
(Mod(10 - Mod(
 Choose(Middle(Personnummer;1;1);0;2;4;6;8;1;3;5;7;9) + 
 Middle(Personnummer;2;1) +
 Choose(Middle(Personnummer;3;1);0;2;4;6;8;1;3;5;7;9) +
 Middle(Personnummer;4;1) +
 Choose(Middle(Personnummer;5;1);0;2;4;6;8;1;3;5;7;9) +
 Middle(Personnummer;6;1) +
 Choose(Middle(Personnummer;8;1);0;2;4;6;8;1;3;5;7;9) +
 Middle(Personnummer;9;1) +
 Choose(Middle(Personnummer;10;1);0;2;4;6;8;1;3;5;7;9)
;10);10) = Middle(Personnummer;11;1))

Formeln kontrollerar först att personnumret är 11 tecken (inklusive bindestreck i formen ÅÅMMDD-XXXK), att det finns ett bindestreck på rätt position och lägger sedan ihop siffersumman för respektive siffra.

Tänk på PuL när du lagrar personnummer.

Samma typ av beräkning används även för beräkning av andra kontrollsiffror, t.ex. för OCR-nummer, ISBN-nummer och liknande.

Beräkningen är tidigare publicerad i boken Att uppgradera till FileMaker Pro 3, utgiven 1996, och FileMaker Pro i praktiken, första upplagan publicerad 1997, båda skrivna av undertecknad.

3 kommentarer till ”Kontroll av personnummer”

  1. Figge Bergquist

    Hur modifierar man kontrollen av personnummer så att den går att använda på 12-siffriga (ÅÅÅÅMMDD-XXXX)?

    Reply
  2. Rolf

    De första inledande sifforna i årtalet, som kan vara 18, 19 eller 20, används inte för att beräkna kontrollsiffran. Öka alla positioner med 2 i formeln, så här:

    (Length(Personnummer) = 13) and(Middle(Personnummer;9;1) = “-”) and(Mod(10 – Mod( Choose(Middle(Personnummer;3;1);0;2;4;6;8;1;3;5;7;9) + Middle(Personnummer;4;1) + Choose(Middle(Personnummer;5;1);0;2;4;6;8;1;3;5;7;9) + Middle(Personnummer;6;1) + Choose(Middle(Personnummer;7;1);0;2;4;6;8;1;3;5;7;9) + Middle(Personnummer;8;1) + Choose(Middle(Personnummer;10;1);0;2;4;6;8;1;3;5;7;9) + Middle(Personnummer;11;1) + Choose(Middle(Personnummer;12;1);0;2;4;6;8;1;3;5;7;9);10);10) = Middle(Personnummer;13;1))

    Reply

Skriv en kommentar

  • (will not be published)
  • 6 × = eighteen

Läs också: