FileMaker - Tip 178

 

Klik op om terug te keren naar het selectiemenu.

Tip 178 - In een gevonden reeks enkel om de zoveel records een record tonen

Een wat vreemde vraag deze keer, maar in FileMaker is zoveel mogelijk, dat we het antwoord toch maar doorsturen.

Hier de vraag: "Wanneer ik een aantal records gevonden heb, dan wil ik ze niet allemaal zien. Meestal zijn het er veel te veel. Ik heb voldoende aan een steekproef. Het zou knap zijn als ik slechts om de zoveel records de record te zien kreeg in mijn list view. Als ik bijvoorbeeld 522 records vind, en ik wil enkel om de acht records een steekproef zien, dan zou ik enkel de records 8, 16, 24, 32, enzovoort op het scherm willen, ongeacht of de records gesorteerd zijn of niet."

Hier gaan we dan: we zouden heel onze found set kunnen doorlopen en om de n records een vlaggetje plaatsen. Daarna zoeken we alle records met een vlaggetje, en klaar is kees. Dat doorlopen kan met een loop, maar we kunnen evengoed een calculatie inschakelen om de deelbaarheid door n te testen. Er zijn dus verschillende methodes.

We bekijken die met de calculatie: eerst en vooral moeten we FileMaker vertellen dat we enkel om de n records een record willen zien. Dat getal n kunnen we vrij ingeven in een globaal veld dat we bijvoorbeeld GReeks noemen. Dan hebben we nog een veld nodig om onze reeks te nummeren; dit veld noemen we Nummer. Tenslotte willen we nog een veld waarin we ons vlaggetje (een 1 of zo) kunnen laten plaatsen via een berekening (zie verder). Dat veld noemen we Marker.

Het scriptje gaat als volgt: nadat we de found set op het scherm hebben (in list view, gesorteerd of niet) doen we een Replace Contents in het veld Nummer: we vullen het veld met een oplopende reeks getallen (van 1 tot 522, om bij het voorbeeld van hierboven te blijven). Elk getal deelbaar door n is een kandidaat voor ons lijstje. Om de deelbaarheid te testen gebruiken we het veld Marker:

If(Mod (Nummer; GReeks) = 0 ; "1" ; "0")

De Modulo-functie geeft ons immers de rest bij een deling. Als we het volgnummer van het record delen door onze 8 en de rest is nul, dan hebben we een record voor ons lijstje; we zetten dan het vlaggetje "1", in de andere gevallen komt er een "0".

Daarna hoeven we enkel nog een Find te doen waarbij we alle records zoeken met een 1 in het veld Marker.

Nadat we onze reeks bekeken hebben, ruimen we de markers netjes op via een Replace Contents die elke 1 en elke 0 vervangt door niets ("").

 
avd@avd-ci.be - contactformulier