Börja med att ladda ner en färdig exempeldatabas som består ungefär av det vi gjorde under förra laborationen. Öppna i FileMaker.
Knappar
I layoutläget kan du på en layout lägga till knappar som har olika handlingar kopplade till sig – till exempel för att utföra en sökning, gå till en viss layout, ta bort aktuell post, eller sätter igång ett manus (vilket vi kommer till senare!).
Det här är viktigt för i grupparbetet ska ni göra en lösning där FileMakers egna menyer och verktyg inte får användas – användaren måste kunna göra allt genom det ni har i layouterna och inget annat.
Knapp för att ta bort post
Gå till layoutläget och välj layouten Medlem. Klicka på Sätt in -> Knapp. Här finns nu massor av olika handlingar som du kan koppla till knappen. Skrolla ner till Poster och välj “Radera post/sökpost”. Tryck OK. FileMaker sätter nu in knappen på slumpmässigt ställe och du ser en blinkande markör: skriv vad som ska stå på knappen (t.ex. Ta bort mig!).
(Ett annat sätt att lägga till knappar: klicka på knappikonen – den med en hand, ungefär i mitten av verktygsraden – och dra sedan en rektangel på layouten.)
Gå sedan till beartbeatningsläget, formulärvy (dvs att bara en post visas åt gången), för att prova knappen. Tryck och se vad som händer! (FileMaker kommer att be om bekräftelse. Om du vill att FileMaker ska ta bort utan att fråga: gå tillbaka till layoutläget, dubbelklicka på knappen, och välj “Visa ingen dialogruta”.)
Knapp för att navigera till annan post
Vi vill kunna bläddra fram och tillbaka mellan poster, så vi behöver knappar för det. Lägg till en knapp, precis som tidigare, men som nu får funktionen “Gå till post/sökpost/sida” (under Förflytta/Byt läge). Under Tillval, ange Nästa. Tryck OK och döp den till Nästa medlem.
Gör en till knapp men med Föregående i stället för Nästa. Gå sedan till bearbetningsläget och kontrollera att knapparna fungerar.
Knapp för att byta till annan layout
Vi vill kunna växla mellan layouterna Medlem och Sektion.
I medlemslayouten, lägg till en knapp med funktionen “Gå till layout” (igen under Förflytta/Byt läge). Under Tillval, klicka på rullistan och välj Layout och sedan Sektion. Tryck på OK och OK igen. Döp den till något vettigt, till exempel “Visa sektioner”.
Gå till bearbetningsläget och prova knappen. (Om du nu kommer till tabellvyn snarare än formulärvyn, klicka på knappen för formulärvy.)
Men vi behöver kunna ta oss tillbaka också! Gör en motsvarande knapp på layouten Sektion, som gör att man förflyttas till layouten Medlem.
Portaler och relaterade fält
Portaler används för att visa flera poster från en relaterad tabell (och gör det också möjligt att lägga till/ta bort/redigera poster). Relaterade fält används för att visa enstaka relaterade poster från en annan tabell.
Portal för att visa vilka sektioner medlem deltar i
Vi vill på medlemssidan kunna se vilka sektioner personen är med i.
Gå till layoutläget och välj layout Medlem. Klicka på Sätt in -> Portal.
Vid “Visa poster enligt relationen”, välj Sektion
. Tryck OK. I nästa dialog bestämmer du vad som ska visas i portalen. Välj att flytta Sektionskod
och Namn
till högra sidan (“Inkluderade fält”) och tryck OK. Placera sedan portalen på lämpligt ställe och kanske öka storleken lite. Gå till bearbetningsläget och kolla att det funkar. (Om det inte syns något: kolla i Deltar
om medlemmen faktiskt är med i någon sektion!)
Relaterade fält för att visa info om ledare
Vi vill på sektionssidan kunna se namn och telefonnummer för ledaren.
Gå till layoutläget och välj layout Sektion
. Vi vill nu inte göra en redigeringsbar ruta, utan ren text.
I verktygslådan, klicka på textverktyget (stort T långt till vänster) och dra en rektangel på layouten. En markör blinkar. Skriv “Ledare :“. Välj Sätt in -> Koppla fält. I rullistan, välj MedlemLedare
om den inte redan är vald. Markera Namn
och tryck OK. FileMaker sätter nu in en variabel som i bearbetningsläget kommer att ersättas med rätt värde. Men håll dig kvar i textrutan. Sätt ett kolon och mellanslag efter det just insatta värdet och välj Sätt in -> Koppla fält igen, men välj Telefonnummer
den här gången.
Gå till bearbetningsläget och kolla att det blev rätt. (Syns det inte något? Kolla så att du inte råkade ta bort sektionens ledare i ett tidigare steg! Ändra i så fall ledaren till något annat.)
Värdelistor
En värdelista är helt enkelt en lista på värden: antingen en uppsättning värden – en kontrollerad vokabulär – som definieras manuellt i värdelistan, eller en uppsättning värden som hämtas från en tabell i databasen. En värdelista har i FileMaker huvudsakligen två användningsområden:
En värdelista kan användas för kontrollera referensintegritet. Gå till Deltar
-layouten i bearbetningsläget. Nu är Sektionskod bara en textruta där man manuellt måste skriva in A, B, C osv. Vad händer om vi skriver M – en sektionskod som inte finns i tabellen Sektioner
? FileMaker accepterar det. Så vill vi inte ha det! Man ska inte kunna ange en sektion som inte finns. Då behöver vi en värdelista att kontrollera mot.
En värdelista kan också användas för att göra det enklare att mata in data (och samtidigt se till att man inte kan råka göra fel). I Deltar
-layouten är Sektion som sagt bara en textruta där man själv måste skriva A, B, C osv. Vore det inte enklare att få upp en lista på de olika sektionerna (med namn också)? Visst vore det det! Då behöver vi en värdelista.
En och samma lista kan användas samtidigt av olika saker på olika sätt. Vi börjar med referensintegriteten.
Värdelista för referensintegritet
Vi vill att FileMaker, när man i Deltar
-layouten skriver in ett värde i fältet Sektionskod
, kollar så att denna sektionskod verkligen finns i tabellen Sektioner
. Gör så här:
- Gå till Arkiv -> Hantera -> Värdelistor. Klicka på Ny. Döp listan till t.ex. “Sektioner”.
- Klicka på “Använd värden från fältet:“.
- Under “Använd värden från första fältet:“, välj
Sektion
och markera sedanSektionskod
. Tryck OK, OK, OK. - Gå till Arkiv -> Hantera -> Databas. Välj fliken Fält och tabellen
Deltar
. Dubbelklicka påSektionskod
. - Klicka på fliken Kontroll. Avmarkera “Tillåt att användaren åsidosätter kontrollen vid datainmatning”. Under “Krav:“, bocka för “Post i värdelista:” och i rullistan till höger, välj
Sektioner
– den lista vi just skapade. Tryck OK, OK.
Vad är det vi gjort? Vi har skapat en lista med alla sektionskoder som finns i tabellen Sektioner
(det är en “dynamisk” lista – FileMaker uppdaterar den automatiskt, så att säga). Vi har också bestämt att när man matar in ett värde i Deltar
-tabellens fält Sektion
så måste detta värde finnas i den värdelista vi angett.
Kolla att det funkar: gå till bearbetningsläge och välj layout Deltar
. Försök att ändra sektionskoden på en post till något som inte finns - t.ex. M.
Prova att göra samma sak med medlemsfältet! (OBS, i exemplet finns redan en värdelista för medlemmar, så ni behöver bara gå till Arkiv -> Hantera -> Databas och göra samma inställningar som ovan, fast för Medlemsnummer
.)
Värdelista för att göra det enklare
OK, vi har referensintegritet, men det är fortfarande jobbigt att behöva skriva in en sektionskod. Bättre med en lista på sektioner. Gör så här:
- Gå till layoutläget och välj layout
Deltar
. Klicka på fältetSektionskod
. I granskaren (om den inte syns: Visa -> Granskare), under fliken Data, ändra “Styr formatmall” från Redigeringsruta till Snabbmeny eller Meny (heter olika i olika versioner). - Nu får användaren i bearbetningsläget upp en meny – men den kommer vara tom! Vi har inte bestämt vad menyn ska innehålla. Så stanna kvar i layoutläget och ha
Sektionskod
markerat. Under “Styr formatmall”, ställ in så att “Värden från:” ärSektioner
. - Gå tillbaka till bearbetningsläget. Nu kan man välja sektion från en lista! Men det är fortfarande A, B, C… istället för faktiska sektionsnamnen (Bowling, Konstsim osv). Värdelistan behöver modifieras lite.
- Gå till Arkiv -> Hantera -> Värdelistor igen. Dubbelklicka på
Sektioner
och sen Ange fält…. Bocka för “och visa värden från andra fältet” och väljNamn
. Tryck OK, OK, OK.
Nu kommer FileMaker att använda sektionskoden som faktiskt värde i rutan, men visa även sektionsnamnet. Gå till bearbetningsläget för Deltar
-layouten och kolla!
(Man kan i värdelisteinställningen – alltså “Ange fält”-fönstret – ställa in så att bara namn visas, istället för sektionskod + namn. Det är vanligen vad man vill ha i en slutprodukt. Men under utvecklingen kan det vara nyttigt att se sektionskod också för att kunna felsöka enklare.)
Manus
När du gör knappar kan du välja mellan en massa olika funktioner, men för att kunna göra mer avancerade saker behöver du manus. Ett manus en uppsättning instruktioner till FileMaker: gör det här, sen det där, sen det här, osv. Manus kan också använda variabler tillåter viss programmering (“OM det här är sant, gör si, ANNARS gör så”). Ett manus kan kopplas till en knapp eller utlösas automatiskt vid olika händelser (“kör det här manuset när använder byter till layout X”).
Lägg till medlem till en sektion
Låt oss göra det enklare att lägga till den aktuella medlemmen (i medlemslayouten) till en sektion. Manuset ska 1) ta medlemmens medlemsnummer, 2) gå till Deltar
-layouten, 3) lägga in medlemsnumret i rätt fält, och 3) ställa sig i det i det fält där sektion väljs.
- Gå till Manus -> Hantera manus. Klicka på Ny. Döp det till “Lägg till medlem i sektion”.
När vi i ett senare manussteg väljer att byta layout så ändras också “kontexten” – FileMaker kommer inte veta något om vad det var vi kollade på innan (en specifik medlem). Men vi vill ju att den här specifika medlems medlemsnummer ska “hänga med” och automatiskt fyllas i när man kommer till “Deltar i”-formuläret. Hur gör vi då? Svaret är: variabler! Vi kan i allra första steget sätta en variabel, ett värde, som sedan “hänger med” och är tillgängligt i alla andra manussteg. Så här:
- I listan till höger, under “Kontroll”, välj “Ange variabel” och klicka på Flytta (eller dubbelklicka “Ange variabel”). Nu har vi första manussteget. I rutan till höger, dubbelklicka “Ange variabel”. I Namn-rutan, skriv
$Medlemsnummer
. Bredvid Värde, klicka på Ange…. Välj tabellenMedlem
om den inte redan är vald. Dubbelklicka påMedlemsnummer
och tryck sen OK, OK för att komma tillbaka till manusfönstret.
Vi har nu en variabel: $Medlemsnummer
. Den kan vi sedan använda i andra steg – $Medlemsnummer
är då lika med medlemsnumret för den medlem vi hade uppe när vi klickade på [den kommande] knappen. Vi fortsätter:
- I listan till vänster, dubbelklicka på “Gå till layout” under “Förflytta/Byt läge”. Klicka på listan vid “Ange:“, välj Layout, och välj
Deltar
. Tryck OK.
När manuset kommer till det här steget så kommer då layouten att växla till Deltar
. Nu dags att lägga till en post och fylla i medlemsnummer så vi slipper göra det manuellt.
- Under “Poster”, dubbelklicka “Ny post/sökpost”.
- Under “Fältinnehåll”, dubbelklicka på “Tilldela fält” och sedan på “Ange målfält”. Välj tabellen
Deltar
och markeraMedlemsnummer
. Tryck OK. - Klicka på Ange bredvid “Beräknat resultat:“. Skriv
$Medlemsnummer
i textrutan och tryck OK.
Nu har vi sagt att efter att layouten växlar till Deltar
så ska fältet Medlemsnummer
fyllas i med värdet av $Medlemsnummer
. Återstår bara att flytta markören till fältet för sektionskod:
- Under “Förflytta/byt läge”, dubbelklicka på “Gå till fält” och tryck på Gå till målfält. Välj tabell
Deltar
och markeraSektionskod
. Tryck OK. I Windows, klicka på Arkiv -> Spara manus i manusfönstret (eller Ctrl+s); I Mac, klicka på Manus -> Spara manus (eller Cmd+s).
Vi är klara med vårt första manus! Dags att skapa en knapp och binda manuset till det:
- Gå till Visa -> Layoutläge, välj layout
Medlem
. - Skapa en ny knapp. Välj funktionen “Utför manus” (nästan längst upp, under “Kontroll”). Till höger, klicka på Ange…, markera det manus vi just skapade –
Lägg till medlem i sektion
– och tryck OK, OK. Låt knappen heta “Lägg till i sektion”. - Gå tillbaka till bearbetningsläget (formulärvy) och prova knappen!
Sökning
Vi kan ta första stegen till egna söksidor och träfflistor. För det behöver vi två nya layouter – en för sökformuläret, en för träfflistan. När man söker i sökformulärslayouten ska man hamna i träfflistelayouten. Börja med träfflistan:
- Gå till layoutläge. Välj Layouter -> Ny layout/rapport. Vid “Layoutnamn”, skriv “Medlemssök - träfflista”. Vid “Visa poster från:“, välj tabellen
Medlem
. Välj Dator och Lista. Tryck Slutför. - Dra
Medlemsnummer
,Namn
ochTelefonnummer
från Fältväljaren till layouten. (Om fältväljaren inte syns: Visa -> Fältväljare.) Lägg dem bredvid vara horisontellt (eller gör layouten större).
Sedan en layout för sökformuläret:
- Fortfarande i layoutläget, välj Layouter -> Ny layout/rapport. Döp till “Medlemssök - formulär”. Välj att visa poster från tabellen
Medlem
. Välj Dator och Formulär. Tryck Slutför. - Samma sak här: dra
Medlemsnummer
,Namn
ochTelefonnummer
från Fältväljaren till layouten.
Dags att göra manus! Vi behöver två: ett som går till layouten med vårt sökformulär och sätter oss i sökläge, och ett som utför sökningen och växlar till layouten med vår träfflista. Vi börjar med det första:
- Manus -> Hantera manus. Nytt. Döp till “Medlem - gå till sökformulär”.
- Dubbelklicka på “Gå till layout” under “Förflytta/byt läge”. Vid “Ange:“, välj “Layout…” och sedan
Medlemssök - formulär
. Tryck OK. - Dubbelklicka på “Sök” under “Förflytta/byt läge”. Spara manuset.
Sedan manuset för att utföra sökningen:
- Manus -> Hantera manus. Nytt. Döp till “Medlem - sök och gå till träfflista”.
- Under “Sökresultat” långt ner, dubbelklicka “Utför sökning” (inte den som bara heter “Sök”!).
- Under “Förflytta/byt läge”, dubbelklicka “Gå till layout”. Klicka på listan vid “Ange:” och välj “Layout” och sedan
Medlemssök - träfflista
. Tryck OK. Spara manus.
Återstår bara att göra knappar på respektive layout:
- Gå till layoutläget. I layouten
Medlem
, skapa en knapp – “Sök medlemmar” – och använd “Utför manus”-funktionen för att binda knappen till manusetMedlem - gå till sökformulär
. - I layouten
Medlemssök - formulär
, skapa en knapp – “Sök” – och bind till manusetMedlem - sök och gå till träfflista
.