2016

Sep

25

Av Rolf

Det finns många tävlingar på hösten och en del arrangörer använder FileMaker för administration av tävlande och redovisning av resultat. FileMaker fungerar såklart alldeles strålande även för denna uppgift!

Det som kan ställa till en del huvudbry är hur man hanterar om två eller flera deltagare hamnar på samma resultat, dvs. samma tid eller samma poäng. Vem av dem kommer först? Eller ska alla med samma resultat dela en placering? Om det inte går att skilja dem åt är det vanligt att de får samma placering.

Jag har gjort ett enkelt exempel.

Radnr_1

I exemplet är det en post per tävling/gren och en portal med de tävlande. I den vänstra kolumnen finns radnummer och sedan platsnummer, namn och tid (i exemplet vinner deltagaren med kortast tid). Databasen innehåller 2 tabeller, en med tävlingar/grenar och en med resultaten. Portalen är sorterad efter tid i stigande ordning.

Radnumret fås genom att sätta in variabeln Postnummer ({{Postnummer}}) på portalraden. Placera insättningspunkten där du vill att den ska hamna och välj Postnummer i menyn Sätt in. I bearbetningsläget visas nu radnummer som ökar med 1 för varje portalrad. Samma variabel kan användas utanför portalen och visar då postens nummer i aktuell sorteringsordning. Jag har placerat ut variabeln Postnummer även upptill till höger på layouten.

Platsnumret är lite svårare och kräver en beräkning. Jag har räknat antal deltagare med ett bättre resultat och adderat 1 för att få platsnummer på respektive deltagare. För det har jag gjort en s.k. själv-relation, en relation mellan samma tabell.

Radnr_2

Relationen är mellan Resultat och ResultatFöre (som alltså båda är samma tabell). Tanken är att relationen ska visa alla deltagare i samma tävling/gren med bättre resultat än aktuell deltagare. Relationen ser ut så här:

Radnr_3

Det är viktigt att jämförelsen görs i samma tävling/gren (därav fältet id_tävling i relationen) och sedan görs en jämförelse med fältet Tid så att relationen får fram alla med bättre tid i samma tävling/gren.

Beräkningsfältet Platsnummer ser ut så här:

Count(ResultatFöre::id_resultat) + 1

Beräkningen räknar antalet resultat som är bättre och lägger till 1.

Beräkningen kan också göras med funktionen ExecuteSQL och ett SQL-kommando, då behövs inte själv-relationen. Det finns exempel på SQL-beräkning i exemplet också, den ser ut så här:

ExecuteSQL ("SELECT COUNT(id_resultat) FROM Resultat 
WHERE \"id_tävling\" = ? and Tid < ?"; ""; ""; 
Resultat::id_tävling; Resultat::Tid)

Ladda ner exempelfil: Radnummer.fmp12

Skriv en kommentar

Din epost-adress stannar hos oss.