|
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 ("").
|