2024

Apr

06

Av Rolf

Det här är ett trick som jag snappade upp för mer än 10 år sedan och använder ofta. Det är ett sätt att enkelt markera en eller flera poster i listläge (eller i en portal) för att sedan bearbeta dem på ett eller annat sätt. Det som behövs är ett unikt värde (id-nummer) för varje post, en relation, en värdelista och ett global-fält utformat som en kryssruta.

I exemplet använder jag samma tabell med bilmärken som jag använt tidigare. En post i tabellen innehåller ett namn på ett bilmärke (fältet Bilmärke) och ett id-nummer (fältet id_bilmärke), som i det här fallet är ett enkelt löpnummer.

Första steget är att göra ett global-fält. Lägg till det i samma tabell, jag kallar det i exemplet för gMarkerade. Tänk på att ställa in det för global lagring, dvs. samma värde för alla poster. Fördelen med global lagring är också att flera användare samtidigt kan använda fältet med olika innehåll.

Det andra steget är att gör en relation. Relationen ska vara mellan två tabellförekomster av samma tabell, i det här fallet tabellen Bilmärke. Jag gör en ny tabellförekomst som jag kallar Bilmärke_Bilmärke och drar en relation mellan. Relationen ska vara mellan fälten id_bilmärke i de båda tabellförekomsterna. Jag passar på att göra en relation till mellan fältet gMarkerade och en ny tabellförekomst av Bilmärke som jag kallar Bilmärke_MarkeradeBilmärken. Denna ska användas för att visa de poster som markeras.

Relationerna ser ut så här:

Nästa steg är värdelistan. Värdelistan ska använda värden från ett fält, i det här fallet fältet id_bilmärke från tabellförekomsten Bilmärke_Bilmärke. Tricket är att endast ta med relaterade värden från relationen Bilmärke. Resultatet blir att för varje post kommer värdelistan endast att innehålla 1 värde, det unika id-numret för posten.

Det fjärde steget är att utforma det globala fältet gMarkerade som en kryssruta och välja att visa värdelistan som jag precis gjorde.

Resultatet blir så här:

Bilmärkena visas som en lista. Till höger om respektive kryssruta visas postens id-nummer, ett unikt värde för varje post. Det är innehållet i värdelistan för posten. När du klickar i kryssrutan för en post får fältet gMarkerade det unika värdet för posten. Klickar du i kryssrutan för en annan post skapas en ny rad i fältet gMarkerade med värdet för den andra posten. För varje kryssruta du klickar läggs en rad till så att fältet innehåller alla id-nummer för de markerade posterna. Tar du bort ett kryss raderas raden med id-numret för posten. Det gör FileMaker automatiskt, det är så kryssrutor fungerar i FileMaker.

Jag har gjort en knapp för att visa endast de markerade posterna, det är ett script med ett enda scriptsteg: Gå till relaterad post. Jag använder nu den andra relationen.

Självklart visar du inte id-numret i den färdiga lösningen, du gör helt enkelt kryssrutan mindre. Klicka på Visa/Göm id till höger nedtill så får du det slutliga resultatet:

Ladda ner exempeldatabasen här: Markera.fmp12

Skriv en kommentar

Din epost-adress stannar hos oss.