2018

jul

31

Av

Det händer då och då att jag skriver in en adress i FileMaker och önskar mig då en mer intelligent FileMaker-databas. Tänk om jag bara hade behövt skriva in gatuadressen (eller boxadressen) och FileMaker själv föreslår postnummer och ort? Självklart går det! Så gott som allt finns tillgängligt på internet och FileMaker är väldigt bra på att söka, även utanför den egna databasen 🙂

Jag har tidigare skrivit om hur du kan söka företag med Eniros API, det här är en variant på samma tema. Istället för att som då skriva in ett telefonnummer skriver du en gatuadress (eller boxadress). Om det bara finns en gatuadress med samma gatunamn och nummer i hela Sverige fyller FileMaker helt magiskt själv i fälten för postnummer och ort. Finns det flera alternativ på olika orter visas alla tillgängliga postadresser (nåja, de 120 första förslagen) i en lista sorterad efter ortsnamnet och du väljer enkelt vilken postadress du önskar från listan. Det låter väl enkelt?

Innan du kan börja söka efter gatuadresser behöver du registrera dig på www.papapi.se, det gör du utan kostnad. Du får ett epostmeddelande med en API-nyckel (token) som du kopierar och klistrar in i avsett fält i exempeldatabasen. API-nyckeln måste skickas med i alla sökningar du sedan gör med www.papapi.se.

Jag har gjort en enkel databas (som du kan ladda ner längst ner på sidan) med några fält.

Jag har gjort ett manus som startas när du skriver in något i fältet Gatuadress. Det startas med en manus-trigger VidObjektValidera för fältet. Manuset ersätter först alla mellanslag med +-tecken (enligt instruktionerna på webbsidan www.papapi.se) med beräkningsfunktionen Substitute och placerar resultatet i variabeln $gatuadress. Anropet till PAP API görs med manussteget Infoga från URL. Följande URL används

Substitute(
"https://papapi.se/json/?s=<<GATUADRESS>>&token=<<NYCKEL>>";
["<<NYCKEL>>";Postadresser::Nyckel];
["<<GATUADRESS>>";$gatuadress])

Tänk på att ta bort krysset i kryssrutan ”Koda URL automatiskt”, det ska inte göras i det här fallet.

Resultatet från PAP API är i formatet JSON och hämtas till variabeln $$json.

Om det bara finns en postadress i resultatet från PAP API är det klart, postnumret och orten hämtas från $$json och tilldelas de båda fälten med funktionen JSONGetElement.

Om flera möjliga orter hittas måste du välja vilken postadress som avses, en lista visas med postnummer och ort samt län (för att lättare känna igen orten). Klickar på på en postadress i listan väljs den och postnumret/orten sätts in i respektive fält.

Listan visas i ett nytt fönster av typen Kort. Det går att göra detta i princip helt generellt som Robert skrivit om tidigare men jag gör enklast möjliga i detta exempel. Jag använder egentligen samma princip som i exempeldatabasen med sökning i Eniro och även i exemplet där jag skriver ut långa textfält, ett stycke i taget.

En extra tabell (i exemplet kallar jag den Resultat) med ”tomma poster” finns där varje post hämtar information från variabeln $$json med beräkningsfunktioner. I förväg måste det finnas ett antal poster i tabellen för att det ska fungera, så många som listan max ska kunna visa (eller fler). När kort-layouten visas görs en sökning så att endast de poster med värden visas, det görs med en manus-trigger VidLayoutÖppna som också sorterar posterna i ortsnamn-ordning.

Jag gör en layout för tabellen Resultat som visas i listläge, precis så stor att postnummer, ort och län ryms på en rad. Det är denna layout som visas i kort-fönstret. Fälten sätter jag in som merge-fält och gör textobjektet till en knapp för att välja postadressen.

När du skriver in en gatuadress, t.ex. Annedalsvägen 9, görs en sökning efter möjliga postadresser, och eftersom det är flera visas de i kortfönstret.

Du kan ladda ner exempeldatabasen här: PostadressAPI.fmp12

Tänk på att du behöver ett kostnadsfritt konto för PAP API samt FileMaker Pro 16 eller senare för att använda exemplet. PAP API kan användas för fler ändamål, t.ex. verifiera en adress.

Skriv en kommentar

  • (will not be published)

Läs också: