Jump to content
  • 0

Berekening te ver...?


hans erik

Question

Ik had gehoopt dat dit in FileMaker 12 beter zou werken maar helaas: FileMaker rekent velden op basis van complexe relaties niet altijd door.

 

Voorbeeld.

Ik heb een tabel met bankrekeningen en een tabel met saldi.

In de saldo-tabel wordt per rekening een saldo met bijbehorende datum opgeslagen.

Dus op een gegeven moment heb je de volgende saldi, uitgewerkt voor 1 rekening:

 

02-10-2012 €300,-

05-12-2012 €145,-

17-12-2012 €160,-

04-01-2013 €88,-

 

Merk op, dat de saldi niet altijd op dezelfde dag vd maand worden geregistreerd en dat in 1 maand best meerdere saldi kunnen voorkomen, of helemaal niks.

 

In de rekeningtabel wil ik op een peildatum het laatst bekende saldo weten en de datum van dat saldo.

Dus als ik invoer: 06-12-2012 moet ie 05-12-2012 geven en € 145,-

En als ik invoer: 02-01-2013 moet ie 17-12-2012 geven en € 160,-

 

In rekning heb ik een global field 'peildatum' (type date), dat een complexe relatie heeft met saldi:

TOC heet saldi_peildatum en de relatie is op rekening::peildatum >= saldi_peildatum::datum_saldo

 

Op basis van die relatie bereken ik in de tabel 'rekening' eerst de laatst bekende datum met een saldo:

b_laatste_datum = max ( saldi_peildatum::datum_saldo )

De max-functie zorgt ervoor dat je altijd de laatste datum krijgt die op of voor de peildatum valt.

 

Dat gaat prima: ik vul een andere datum in, het systeem berekent meteen de juiste datum uit de saldo-tabel.

 

Maar nu wil ik die 'b_laatste_datum' gebruiken om uit diezelfde saldo-tabel ook het bijbehorende saldo op te halen en dat doet ie niet! FMP heeft kennelijk niet door dat de b_laatste_datum veranderd is en voert de vervolgberekening niet uit, evalueert de relatie zelfs niet.

 

NB De saldo-tabel is hiervoor dus gekoppeld op rekening::b_laatste_datum = saldi::datum_saldo, maar die wordt niet getriggered terwijl b_laatste_datum WEL verandert.

 

Is dit een feature of een bug? Ik houd het op het laatste.

Heeft iemand hier ervaring mee?

Link to comment

6 answers to this question

Recommended Posts

  • 0

Als je na de wijziging de applicatie afsluit, opnieuw start en de juiste waarde wordt dan wel getoond dan is het een refresh probleem ivm een unstored calculation. Oplossing is dan een schermrefresh in te bouwen. Als je de 'flikker' wilt voorkomen kun je het veld op een tab zetten en met een scriptstap even van tab wisselen. Meestal wordt het veld dan wel geupdate.

 

Als dit niet het probleem is dan kun je bv een relatie leggen met een (globaal) invoerveld en deze met een scriptstap de juiste waarde geven na het wijzigen van de datum. De waarde kun je ophalen uit het calculatieveld met de maxfunctie

Link to comment
  • 0

Zonder het bestand lastig maar als je wel de datum uit de relatie kan pakken waarom pak je dan ook niet het bedrag uit de relatie. Je hebt de max functie niet nodig je kunt gewoon de relatie sorteren en dan krijg je het juiste record "bovenaan" en kan je die pakken zonder max.

 

Een truuk om een relatie te laten dwingen te evalueren zonder een refresh flush. Is een global als cartesian opnemen in de betreffende relatie en die veranderen dan "weet" FileMaker dat de relatie gegevens opnieuw moeten worden opgehaald.

 

Groet,

 

WJ

Link to comment
  • 0
Zonder het bestand lastig maar als je wel de datum uit de relatie kan pakken waarom pak je dan ook niet het bedrag uit de relatie. Je hebt de max functie niet nodig je kunt gewoon de relatie sorteren en dan krijg je het juiste record "bovenaan" en kan je die pakken zonder max.

 

Die tip van de sortering lijkt te werken, bedankt.

 

Zonder sortering pakt ie altijd de eerste die ingevoerd is, en dat is meestal niet de goede. Maar je moet de relatie natuurlijk op aflopende datum sorteren.

 

Jammer overigens dat FileMaker niet een paar extra aggregate functies kent: Last en First.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...