Jump to content
  • 0

Calculatie via script


Femca

Question

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!

Link to comment

5 answers to this question

Recommended Posts

  • 0
'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

Link to comment
  • 0

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

Link to comment
  • 0

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

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