Jump to content
  • 0

cache <> goed rekenen?


SuperWimmie

Question

Posted

FM8 Windows.

 

Ik gebruik zware rekenkundige acties in een grote applicatie.

 

Nu bezit ik een bestand met offerteregels en opdrachtregels (in dezelfde tabel), door middel van een (lege) opdrachtdatum wordt dit onderscheiden van elkaar.

 

Ik heb in versie 6 diverse rapporten gemaakt, waarbij ik een globale variabele gebruik om alle totaaltellingen

a. met alleen offerteregels

b. met alleen opdrachtregels

c. met beide regels

tot de juiste uitkomst te laten leiden.

 

In versie 6 werkte dit perfect. In de afdrukscript kreeg de gebruiker de keuze, de globale variabele werd ingesteld, het schermvoorbeeld rekende alles netjes opnieuw uit en voila: de juiste uitkomsten werden gepresenteerd.

 

Maar in FM8 doet hij dat niet meer.....

 

Het eerste rapport gaat goed, hij berekent alles zoals dat via de dan geldende parameter moet zijn.

Maar zodra ik direct erachteraan een nieuw rapport op vraag, en de parameter verander, rekent hij helemaal NIETS opnieuw uit.

De oude waarden komen weer netjes in beeld.....

 

Oeps, is dit de prijs voor een hogere performance?

 

Heeft iemand een tip dat ik FM8 weer opnieuw kan laten rekenen?

(commit record heb ik al ingesteld staan voor alle mogelijke wijzigingen)

10 answers to this question

Recommended Posts

  • 0
Posted

Natuurlijk even uitgeprobeert (mijn dank voor de tip):

 

Gedeeltelijk werkt dit.

 

Wel met betrekking tot de gegenereerde gegevens van de actieve tabel, helaas niet voor de berekening die uit gerelateerde tabellen er onder uit moeten komen...

 

Ik krijg nu zelfs dat de TOTAL velden niet meer overeenstemmen met de in de Calculated Fields gegenereerde totalen...

 

Dieper liggende Child-tabellen worden NIET opnieuw berekend en laten in het scherm nog steeds verkeerde uitkomsten zien!

  • 0
Posted

Yep, ik ben er uit....

 

 

Wat Filemaker doet, is controleren of één van de records binnen de gevonden set is gewijzigd. Indien dat niet zo is, gaat hij uit van de cachewaarde.

 

De berekening is bij mij zo opgezet, dat de berekeningsparameter in een gebruikersinstellingen record zit.

De records waarin de uiteindelijke berekening zit, worden gewoonlijk dus NIET gewijzigd.

 

Oplossing: door het eerste record waarin berekeningen zitten eventjes aan te passen, signaleert FM een verschilletje en rekent opnieuw de calculated fields uit van de betreffende tabel.

 

 

Je moet het maar net even weten.....

 

(pffft, allemaal nieuwe "workarounds", een functie Recalculate zou hier op zijn plaats zijn.)

 

 

Toch wel belangrijk: stel dat je de BTW percentage van een factuur aanpast, het is dan maar de vraag of hij bij de eerste de beste afdruk het juiste percentage opnieuw heeft doorberekend over de factuurregels heen (indien de BTW per regel wordt berekend)....

  • 0
Posted

Nou, ben ik weer.....

 

Het gaat gewoon hardstikke fout!

 

Indien de records BINNEN 1 SUBTOTAAL niet gewijzigd zijn, berekend hij het niet opnieuw....

 

Dus ik dacht het op te lossen met de wijziging van het eerste gevonden recordje in elk onderliggende Child bestand, maar dat volstaat niet voor het volledige rapport....

 

De Summary velden voor het totaal-generaal van het rapport worden in zijn geheel niet herberekend....

 

Pfoe, wat hiervan te denken...

  • 0
Posted

Yes en nu ben ik er toch wel uit!!

 

Wat een gedoe, maar het gaat toch maar weer lukken.

Gelukkig schijnt de zon er ook nog door vandaag, dus de dag kan niet meer stuk....

 

Het probleem:

FM8 zou met een Refresh Window (Flush cached joint results) alle opgeslagen resultaten die al eerder zijn gegenereerd moeten weggooien en nieuwe resultaten opnieuw moeten opbouwen.

 

a. Helaas doet hij dat alleen op het betreffende tabel waarop de opdracht wordt uitgevoerd en relaties van slechts 1 nivo diep (voor zover getest maakt het niet uit of het in één bestand zit, of in aparte bestanden) :?

 

b. Helaas worden Summary velden die gepresenteerd worden in de Trailing Grand Summary ook niet opnieuw berekend. :cry:

 

Voor probleem A laat ik op alle tabellen het commando Refresh Window (Flush cached joint results) uitvoeren

 

Voor probleem B laat ik twee keer achter elkaar Show Omitted Only uitvoeren, zodat de gevonden set voor FM wel gewijzigd is, maar voor de gebruiker hetzelfde resultaat geeft.

 

 

Eindelijk....... *zucht van verlichting*

 

(Superwimmie gaat weer vrolijk verder met zijn mooiste pakket ooit :lol: )

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...