2013

Feb

22

Av

Det finns en funktion i FileMaker som är något av en universal-funktion, funktionen List. Nåja, den löser väl inte alla problem men fler än vad man först tror.

Funktionen List används för att slå ihop alla rader i ett repeterat fält till ett textfält eller ett fält i alla relaterade poster till ett textfält. Jag har använt List för just detta massvis med tillfällen. Men för ett tag sedan tipsade min kollega Robert mig om att det finns ytterligare anledningar att använda funktionen List. Funktionen kan nämligen användas för att slå ihop två eller flera fält på ett intelligent och mycket användbart, nästan magiskt, sätt.

Funktionen List kan i många fall ersätta besvärliga och långa beräkningsformler med flera if-satser. Ett exempel där jag haft stor nytta av List-funktionen på detta magiska sätt är när jag nyligen arbetat en hel del med namn och adresser.

Namn, gatuadress och postadress skulle slås ihop till ett fält med kommatecken mellan uppgifterna för att lättare kunna presenteras och flyttas till andra system. Gatuadressen kunde bestå av 2 fält och det kunde dessutom finnas en c/o-adress så teoretiskt kunde en adress variera mellan 3 och 5 uppgifter (1 namn, 1-3 adressrader och 1 rad med postnummer och ort).

På det “gamla” hederliga sättet kan en beräkning för att slå ihop fälten se ut så här:

Namn & 
If(not IsEmpty(CO_Adress);", " & CO_Adress;"") & 
If(not IsEmpty(Adress1);", " & Adress1;"") & 
If(not IsEmpty(Adress2);", " & Adress2;"") & 
If(not IsEmpty(Postadress);", " & Postadress;"")

För varje uppgift kontrollerar jag om den finns och lägger till ett kommatecken samt uppgiften (Namn finns alltid). Finns inte uppgiften lägger jag till en tom text (“”). Det fungerar förstås.

Med funktionen List blir motsvarande formel mycket enklare:

List(Namn;CO_adress;Adress1;Adress2;Postadress)

Man behöver inte kontrollera om fälten är tomma, funktionen List är tillräckligt intelligent för att inte lägga in tomma fält. Det är bara att fylla på med de fält som man vill lägga ihop.

Enda nackdelen är att det blir ny rad mellan uppgifterna istället för kommatecken som jag ville ha, men det går ju att lösa enkelt med funktionen Substitute:

Substitute(List(Namn;CO_adress;Adress1;Adress2;Postadress);"¶";", ")

Skriv en kommentar

  • (will not be published)
  • × 7 = twenty eight

Läs också: