Jump to content
  • 0

script deel 3 script eleganter maken?


Femca

Question

Kan ik dit script "eleganter" maken ?

De bedoeling was dus om pack_year_delta te laten berekenen.

Waarbij

1) sample_clinical2_round2::pack_year leeg is er naar het volgend record moet worden gegaan

2) delta_clinical::Pack_year_delta niet leeg is naar het volgend record

3) zoniet berekenen

 

script ziet er als volgt uit

 

Loop

If(sample_clinical2_round2::Pack_year = "")

Go to Record (next)

Else

If (not isEmpty (delta_clinical::Pack_year_delta)

Go to Record (next)

Else

Set Field(delta_clinical::Pack_year_delta; sample_clinical2_round2::pack_year - sample_clinical2::pack_year)

End If

Go to Record (next; Exit after last)

End If

End Loop

Link to comment

3 answers to this question

Recommended Posts

  • 0

Als het de bedoeling is om in 1 keer in alle records een waarde aan te passen heb je de script stap Replace Field Contents[by calculation]

De voorwaarden die je stelt zijn ook in 1 berekening te vatten.

Dus het kan in 1 scriptstap en in 1 berekening

Replace Field Contents ( 
delta_clinical::Pack_year_delta ; 
 If ( ( IsEmpty ( sample_clinical2_round2::Pack_year ) ) and ( not IsEmpty ( delta_clinical::Pack_year_delta ) ) ; 
   sample_clinical2_round2::pack_year - sample_clinical2::pack_year ; 
   delta_clinical::Pack_year_delta 
 )
) 

 

In gewoon nederlands: als aan beide voorwaarden wordt voldaan vervang je de veldinhoud door een nieuwe berekende waarde, anders laat je gewoon staan wat er al staat.

 

HTH

 

rmw

PS Ik heb de code gewoon hier ingetypt, dus het kan zijn dat er een haakje oid ontbreekt :?

Link to comment
  • 0

Hallo rmw

 

Ik heb jouw script getest maar ik heb opnieuw het probleem dat het lang duurt om het script te runnen.

Nu als ik mijn script met de loop zou behouden en ik wil een tweede voorwaarde invoegen moet ik dan een tweede loop invoeren?

Nu ziet mijn script er als volgt uit:

 

Loop

If (sample_clinical_round2_pilinname = "" or sample_clinical_round2_substitutietherapie = "")

Go to Record (next)

Else

If (not is Empty ( delta_clinical::pilinname_delta) or not IsEmpty (delta_clinical::pilinname_deltaproc) or not IsEmpty (delta_clinical::substitutietherapie_delta )or not IsEmpty (delta_clinical::substitutietherapie_deltaproc)

Go to Record(next)

Else

Set field(delta_clinical::pilinname_delta; sample_clinical_round2_pilinname - sample_clinical_pilinname)

Set field(delta_clinical::pilinname_deltaproc; (sample_clinical_round2_pilinname - sample_clinical_pilinname) *100/sample_clinical_pilinname)

Set field(delta_clinical::substitutietherapie_delta ; sample_clinical_round2_substitutietherapie - sample_clinical_substitutietherapie)

Set field(delta_clinical::substitutietherapie_deltaproc ; sample_clinical_round2_substitutietherapie - sample_clinical_substitutietherapie)*100/ sample_clinical_substitutietherapie)

End If

Go to record (next, exit after last)

End if

End loop

 

Kan ik dit ook anders?

Link to comment
  • 0

Ik zou persoonlijk eerst een selectie maken van records die je wilt bijwerken, de rest weglaten. Dan is een replace sneller dan een loop. Plus als je alleen bewerkt wat je nodig hebt (veel minder records) is het ook veel sneller, ik denk niet dat je het nog sneller krijgt.

 

Dus;

 

Maak een extra veld die een berekening heeft met de volgende calculatie;

notEmptyVar = If( If (not is Empty ( delta_clinical::pilinname_delta) or not IsEmpty (delta_clinical::pilinname_deltaproc) or not IsEmpty (delta_clinical::substitutietherapie_delta )or not IsEmpty (delta_clinical::substitutietherapie_deltaproc);"1";"0")

 

Op deze manier weet je of je vergelijking 2 een waarde heeft of niet, zodat je erop kan zoeken. Dan kan je een script maken die het volgende uitvoert

 

Set Error Capture (on)

Enter Find Mode

Set Field(sample_clinical_round2_pilinname;"==")

Set Field(sample_clinical_round2_substitutietherapie;"==")

Set Field(notEmptyVar;"==")

Preform Find

If GetLastError() <> 401

Replace Field Contents (delta_clinical::pilinname_delta; sample_clinical_round2_pilinname - sample_clinical_pilinname)

Replace Field Contents (delta_clinical::pilinname_deltaproc; (sample_clinical_round2_pilinname - sample_clinical_pilinname) *100/sample_clinical_pilinname)

Replace Field Contents (delta_clinical::substitutietherapie_delta; sample_clinical_round2_substitutietherapie - sample_clinical_substitutietherapie)

Replace Field Contents (delta_clinical::substitutietherapie_deltaproc; sample_clinical_round2_substitutietherapie - sample_clinical_substitutietherapie)*100/ sample_clinical_substitutietherapie)

End If

 

Dit is handmatig ingetypt, dus er kunnen wat syntax foutjes in zitten.

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