2010

Nov

09

Av Rolf

Filtrerade portaler är en nyhet i FileMaker Pro 11. Du har en relation men kan med olika ”filter” visa en delmängd av de relaterade posterna i portalen och har också möjlighet att visa flera portaler med olika innehåll från samma relation. Ett problem uppstår dock när du vill summera ett värde i de relaterade posterna. En relation kan t.ex. filteras med datum så att endast relaterade poster senare än ett angivet datum visas, och du kan låta en FileMaker-användare ändra datum efter önskemål. I exemplet kan användaren ange ett datum och endast visa de relaterade rader i portalen där datumet är senare än det angivna.

sumport1

I bilden visas portalen med alla relaterade rader. Observera att summa  av värdena, som visas nedanför portalen, är102. Summan beräknas med hjälp av formeln:

Sum(Portalrader::Värde)

där Portalrader är namnet på relationen.

Jag sätter ett filter på portalen för att endast visa de portalrader som är senare än angivet datum i fältet Datum. Dubbelklicka på portalen i layoutläget och klicka sedan på knappen Ange till höger om kryssrutan Filtrera portalposter.

sumport2

Som formel för filtret används följande:

sumport3

Tabellnamnet SummeraPortal är posten där portalen finns. Nu kan användaren ange ett datum i fältet Datum och får följande resultat (om dagens datum anges i fältet).

sumport4

Portalen visar då endast de rader där datum är senare än dagens datum (2 rader har försvunnit från portalen). Lägg dock märke till att summan under portalen fortfarande är samma som innan (102), den har inte uppdaterats och visar alltsåinte rätt.

Lösningen är att använda statistikfält! Redan i FileMaker 7 gick det att använda statistikfält för att summera portaler och det fungerar precis lika bra som beräkningsfält med funktionen Sum. Definiera ett statistikfält i tabellen med de relaterade posterna (i mitt fall tabellen Portalrader) som är en summa av fältet Värde.

sumport5

Byt ut summa-fältet på layouten under portalen mot det relaterade statistikfältet, som dock fortfarande visar fel summa.

Statistikfältet behöver veta vilket urval som ska beräknas. Gå till layoutläget och placera det i en portal som bara visar en rad och ange samma filter på denna portal som den andra. De båda portalerna får då samma urval av relaterade poster, i den ena portalen visas posterna radvis och i den andra visas endast statistikfältet från första raden.

sumport6

Summa blir nu korrekt. Ändras datumet i fältet Datum uppdateras både raderna i portalen och summan av fältet Värde.

Ladda ner exempeldokument här: SummeraPortal.zip (15,95 kb)

Uppdatering 2011-09-06: Om du vill visa antal rader i portalen lägger du till ett statistikfält i tabellen Portalrader (i exemplet) som istället för att beräkna ”Summa av Värde”, beräknar ”Antal av id_portalrad”. Placera sedan statistikfältet för antal i samma portal som ”Summa (statistik i portal)”. När du definierar ett statistikfält som räknar antal ska du alltid se till att fältet som antalet beräknas med är ifyllt, i det här fallet är det ett id-nummer som automatiskt får ett löpande nummer.

Skriv en kommentar

Din epost-adress stannar hos oss.