2009

Apr

30

Av

En uppdaterad variant av detta inlägg finns här: http://www.filemakerbloggen.se/post/sok-medan-du-skriver-igen/

Nya möjligheter öppnade sig med manus-triggers i FileMaker Pro 10. En sådan är “sök medan du skriver”, en slags filtering av poster beroende på vad du skriver. Tidigare var denna teknik bara möjligt med relationer när poster visades i en portal. Har man många poster är det ofta snabbare och enklare att visa dem i ett vanligt listläge. I det här exemplet har jag skapat en databas med 2 fält, ett globalt fält för att skriva in sökbegreppet och ett fält som jag kallar för Namn. Det innehåller t.ex. namn på olika personer. När jag skriver något i det globala fältet (som jag här kallar gFilter) ska endast de poster som matchar det skrivna visas i listan. Ju fler tecken som skrivs, desto kortare blir listan.

Placera “sök-fältet” gFilter i sidhuvudet och fältet Namn i huvuddelen. Visa layouten i listläge.

filterlayout.jpg

Det som ska hända är att för varje tangentnedtryckning i “sök-fältet” gFilter ska en sökning göras. Sökningen görs med ett manus, jag kallar det för “Filtrera”, som ser ut så här:

Manuell felhantering [På]
if [not IsEmpty(gFilter)]
   Sök []
   Tildela fält [Namn; gFilter]
   Utför sökning []
Else
   Visa alla
End If
Gå till fält [gFilter]

Om fältet gFilter är tomt visas alla posterna, annars görs en sökning i Namn-fältet. Det sista som görs i manuset är att gå tillbaka till “sök-fältet”, användaren ska helst inte att märka att en sökning görs mellan. (Har du många poster i tabellen kommer det dock att märkas.)

För att det ska fungera måste du också se till att manuset utförs med en manus-trigger. Gå till layoutläget, markera fältet gFilter och välj att utföra manuset när fältet ändras (“PåObjektÄndra”), se följande bild:

filter.jpg

Exempeldatabasen kan laddas ner här.

Om du inte vill göra sökningen medan du skriver, utan först när du trycker på Enter, ändrar du manus-triggern så att samma manus körs för händelsen “PåObjektSpara” istället.

Skriv en kommentar

  • (will not be published)
  • + 9 = fourteen

Läs också: