2008

Mar

7

Av

Telefonnummer skrivs alltid med en viss finess, siffror grupperas efter ett givet mönster. Det är olika grupperingar beroende på hur många siffror ett telefonnummer har, t.ex. 046-23 52 50 om numret efter riktnumret har 6 siffror, 046-222 00 00 om det är 7 siffror (numret går till Lunds Universitet). 

Låt FileMaker ta hand om utformningen så slipper du bekymra dig om att skriva mellanslag på rätt ställen. I FileMaker finns något som heter Automatisk beräkning, en kanske för sällan använd funktion? Automatisk beräkning beräknas så fort ett fält i beräkningen ändrats, men är inget beräkningsfält för det. Det kan användas på vanliga (icke-beräknings)fält för att få in ett värde, eller ersätta ett befintligt värde med ett annat.

Antag att du har ett fält där du skriver in telefonnummer kallat för just “Telefonnummer”. Du vill att numren som du skriver in ska utformas med automatik utan att behöva skriva mellanslag.

Definiera en Automatisk beräkning (du anger det under Tillval för fältet) med följande formel:

Let(
[
p = Filter(Self;"01234567890-");
num = Right(p;Length(p)-Position(p;"-";1;1));
rikt =Left(p;Position(p;"-";1;1))
]
;
rikt &
Case(
Length(num) = 5;Middle(num;1;3) & ” ” & Middle(num;4;2);
Length(num) = 6;Middle(num;1;2) & ” ” & Middle(num;3;2) & ” ” & Middle(num;5;2);
Length(num) = 7;Middle(num;1;3) & ” ” & Middle(num;4;2) & ” ” & Middle(num;6;2);
Length(num) = 8;Middle(num;1;2) & ” ” & Middle(num;3;2) & ” ” & Middle(num;5;2) &
” ” & Middle(num;7;2);
num))
Formeln använder funktionen Filter som ser till att inga andra tecken än siffror eller bindestreck finns med i fältet. Jag använder funktionen “Self” som refererar till det fält som beräkningen används i, dvs. till sig själv. (“Self” gör att formeln kan göras som en egen funktion och användas till flera olika fält.) Beroende på längden av numret grupperas det på några olika sätt med hjälp av funktionen Middle (som returnerar ett antal tecken från en text).

Samma princip kan användas för t.ex. postnummer eller liknande.

För att det ska fungera bra ska du ta bort krysset i rutan Ersätt inte befintlig värde, då utformas telefonnumret även när du ändrar det.

Skriv en kommentar

  • (will not be published)
  • six × = 30

Läs också: