Calculatie via script

Vraag en antwoord over FileMaker Pro 10

Calculatie via script

Berichtdoor Femca » 11 maart 2010 16:04

Hallo iedereen

Wij hebben een vraag ivm het aanpassen van een calculatie formule adhv een script.

We hebben een grote database die bestaat uit verwerkte vragenlijsten met betrekking tot familiale voorgeschiedenis (vader, moeder, grootouders, broers en zussen). We maakten nieuwe kolommen aan adhv Calculations. Deze calculaties (ongeveer 20 per familielid, ca. 260 in totaal) vertragen FM pro 10 echter enorm! Daarom bedachten we scripts (replace field contents by calculation) om deze calculatie uit te voeren, en maakten we van de velden zelf een tekst-of numeriek veld.

Nu moeten we echter deze 260 formules kopiƫren naar een script wat heel arbeidsintensief is.
De formules zijn als volgt opgebouwd:
vb: om volgend veld te maken 'Sudden_death_father' gebruiken we volgende formule
If (Position ( quest2::E6 ; "5" ; 1 ; 1); "Yes"; "No")
(In vraag E6, als 5 werd geantwoord is er plotse dood)

Voor de moeder:'Sudden_death_mother'
If (Position ( quest2::E6_2 ; "5" ; 1 ; 1); "Yes"; "No")

Voor een grootouder:
If (Position ( quest2::E6_3 ; "5" ; 1 ; 1); "Yes"; "No") enz

Zoals jullie zien, zijn de formules op dezelfde manier opgebouwd, behalve de referentievelden verschillen
Bestaat de mogelijkheid om een script te maken die voor de verschillende familieleden de referentievelden vanzelf verandert?

Vb 'Sudden_death_x': If (Position ( quest2::y ; "5" ; 1 ; 1); "Yes"; "No")
Kunnen we een dergelijk script maken:
if 'x' = father then 'y' in the formula must be E6
if 'x' = mother then 'y' in the formula must be E6_2 enz

Kan iemand ons hiermee helpen?
Bedankt!
Femca
 
Berichten: 32
Geregistreerd op: 11 maart 2010 15:06

Re: Calculatie via script

Berichtdoor andries » 11 maart 2010 17:06

als de calculaties enkel lokale velden gebruiken kan je ze ook gewoon auto-enters maken. Dan worden ze ook geupdate als de waarde wordt aangepast, en kunnen ze wel geindexeerd worden, en zal het niet ten kosten gaan van snelheid.
andries
FileMaker 9-10-11 Certified Developer
 
Berichten: 521
Geregistreerd op: 15 feb 2008 14:09
Woonplaats: Boortmeerbeek

Re: Calculatie via script

Berichtdoor rmw » 11 maart 2010 22:55

Femca schreef:'Sudden_death_x': If (Position ( quest2::y ; "5" ; 1 ; 1); "Yes"; "No")
Kunnen we een dergelijk script maken:
if 'x' = father then 'y' in the formula must be E6
if 'x' = mother then 'y' in the formula must be E6_2 enz

Je hebt SetFieldByName() om velden van een waarde te voorzien en GetField() om velden uit te lezen, waarbij het 'veld' als een tekststring kan worden opgegeven en dus worden berekend.

Is dat wat je zoekt?

rmw
rmw
 
Berichten: 1022
Geregistreerd op: 12 aug 2002 08:40
Woonplaats: Almere

Re: Calculatie via script

Berichtdoor Femca » 15 maart 2010 13:55

Bedankt voor je reactie.

We hebben reeds geprobeerd om eerst een variabele 'x' aan te maken via Set variable, met voor 'x' de waarde 'father' of 'mother' enz bijvoorbeeld.
Daarna doen we 'Replace field contents (fieldname: 'sudden_death_x; If (Position ( quest2::E6_x ; "5" ; 1 ; 1); "Yes"; "No"))'. Het probleem is dat het veld 'sudden_death_x' niet bestaat (enkel 'Sudden_death_father', 'Sudden_death_mother' enz) en we het dus niet kunnen selecteren als veld waarin hij de calculatie moet zetten. Alsook veld E6_x bestaat niet, maar wel E6_father, E6_mother.
Kan Filemaker die velden toch vinden door een waarde aan die 'x' te geven? Zoja, hoe?

Alvast bedankt!

Femca
Femca
 
Berichten: 32
Geregistreerd op: 11 maart 2010 15:06

Re: Calculatie via script

Berichtdoor rmw » 15 maart 2010 20:42

Replace field contents is niet in staat om een veld aan te wijzen door middel van een berekening.
Set Field by Name kan dat wel, maar dat kan slecht op het veld in 1 record.
Je zoekt dus naar een manier om wel alle records af te gaan (wat replace doet), maar ook een veld te kunnen opgeven door een berekening (wat set field by name doet)
Dat kan door middel van een 'loop'
In je script kan je een aantal stappen laten herhalen door de scriptstappen 'loop / end loop' te gebruiken.
Alles tussen 'loop' en 'end loop' wordt zo vaak herhaald als je opgeeft.
Als je als laatste stap, voor 'end loop', go to record [next, exit after last] opgeeft moet het lukken.

HTH

rmw
rmw
 
Berichten: 1022
Geregistreerd op: 12 aug 2002 08:40
Woonplaats: Almere

Re: Calculatie via script

Berichtdoor Femca » 18 maart 2010 08:52

Bedankt voor de hulp!
Femca
 
Berichten: 32
Geregistreerd op: 11 maart 2010 15:06


Keer terug naar FileMaker 10



Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers en 1 gast

cron