2012

Oct

17

Av Rolf

En av nyheterna i FileMaker 12 är möjligheten att göra beräkningar med SQL-kommando. Med hjälp av den nya funktionen ExecuteSQL kan man ta fram värden som det tidigare behövdes flera beräknings- och statistikfält för att göra. 

Tidigare har det funnits plugins för att använda SQL-kommando i beräkningar. Dessa finns förstås fortfarande kvar och några har mer funktionalitet än FileMakers inbyggda funktion ExecuteSQL som ”bara” kan hämta värden (endast kommandot SELECT kan användas).

SQL är förkortning av Structured Query Language. Det är ett standardiserat språk för att hämta och modifiera data i en relationsdatabas och används i så gott som alla ”större” databaser som MySQL, SQL Server, Oracle osv. Med kommandot SELECT ställer man frågor till databasen, som resultat kan man få ett värde (t.ex. antal poster) eller innehållet i ett eller flera fält i en eller flera poster. Du kan direkt i SELECT-frågan begränsa urvalet med WHERE. En fråga kan t.ex. se ut så här:

SELECT förnamn FROM Personer WHERE efternamn = 'Nilsson'

Som resultat får du en lista med alla förnamn från tabellen Personer som heter Nilsson i efternamn. Det finns en mängd litteratur om SQL, en enkel genomgång hittar du t.ex. här: http://www.databasteknik.se/webbkursen/sql/index.html. Det är inte säkert att du kan använda alla kommando-varianter i FileMaker, endast en delmängd av funktioner är tillgängliga.

Jag har tidigare skrivit om hur du kan räkna förekomster av värden från t.ex. kryssrutor med hjälp av ett beräknings- och statistikfält för varje värde. ExecuteSQL-funktionen ersätter i det fallet alla extra fält, och det är bara ett av många användningsområden!

Som exempel väljer jag att använda samma databas som jag gjorde när jag skrev om hur man kan göra diagram för radioknappar, men jag gör om radioknapparna till kryssrutor. Skillnaden är alltså att man kan ha flera värden i varje post och man vill räkna alla förekomster av ett värde, oavsett om det bara är det som är valt eller om det finns flera val i samma post.

Jag har en tabell som heter DiagramKryssrutor som innehåller ett fält, ”värde”. Fältet är utformat med kryssrutor som kan ha värdena a, b och/eller c.

Jag gör ett diagram som hämtar data från Aktuell post. I dialogrutan för Inställningar för diagrammet klickar du framDatakälla till höger och väljer Aktuell post (avgränsade data).

SQLBild1

Det betyder att värdena för diagrammet ska finnas i ”listor”, varje värde på egen rad. Först definierar jag X-axeln där det ska visas ”a”, ”b” och ”c”. Jag skriver in dem i fältet Data med returtecken mellan bokstäverna.

SQLBild2

Y-axeln ska innehålla antalet av värdena a, b respektive c. Med funktionen ExecuteSQL kan jag beräkna antalet direkt, en rad för varje alternativ med returtecken mellan. Antalet räknar jag med SQL-funktionen Count.

SQLBild3

Om du har FileMaker-fält som innehåller otillåtna tecken, t.ex. åäö, måste du skriva fältnamnet inom citationstecken. För att söka fram alla som har värdet ”a” i fältet värde använder jag operatorn LIKE och skriver %-tecken före och efter bokstaven. Det gör att värdet kan finnas var som helst i fältet för att hittas.

Klicka på Klar och gå till bearbetningsläget. Diagrammet beräknas direkt.

SQLBild4

Ladda ner exempeldatabas: DiagramCheckbox.zip (17,26 kb)

Skriv en kommentar

Din epost-adress stannar hos oss.