|
Tip 224 - Benzineverbruik berekenen: de vorige
kilometerstand aftrekken van de actuele 
Jan V. stuurde deze
vraag in: "Ik wil mijn benzineverbruik zorgvuldig bijhouden
en registreer elke tankbeurt in een databank. Daarbij
zou ik op elke nieuwe record de actuele kilometerstand
moeten verminderen met de vorige, zodat ik precies weet
hoeveel kilometers ik gereden heb met het aantal getankte
liters. Maar hoe krijg ik de kilometerstand van de vorige
record op mijn nieuwe record?".
Zoals steeds zijn er
verschillende mogelijkheden. Eerst en vooral is er de
scriptstap Insert
from last record.
Daarmee kunnen we de kilometerstand (uit het veld Actuele
kilometerstand) via een script kopiëren naar de
nieuwe record en die daar dan verplaatsen met een
SetField
naar het veld Vorige kilometerstand. Erg simpel,
dus.
Maar het gaat ook
zonder script: met een eenvoudige calculatie. Eenvoudig
omdat in FileMaker 7 en FileMaker 8 een relatie
gebaseerd kan zijn op de vergelijking van meer dan
één veld. We leggen daarbij een relatie tussen
deze databank en zichzelf (een SelfJoin heet dat) en
omdat we kiezen voor een x-relatie is elke record
gerelateerd aan elke andere. We hebben echter wel een
bijkomende eis: we willen de actuele nieuwe record
uitsluiten: die mag niet in die portal
verschijnen. Dat doen we door in de relatiedefinitie
het veld Datum te betrekken* en als operator kiezen
we voor "niet gelijk aan". Op elke record kunnen we dan
een portaal tonen (maar dat doen we niet) die alle vorige
tankbeurten toont. Op het veld Actuele
Kilometerstand laten we dan de Max-functie
los. Die geeft ons de hoogste kilometerstand (die van
de voorlaatste tankbeurt). Dan gewoon die waarde
aftrekken van de Actuele kilometerstand en Jan kan
weer verder.
* We moeten wel een ander veld gebruiken als we twee keer op
één dag tanken. Met de huidige prijzen
doen we dat liever niet...
|