Ga naar inhoud
  • 0

script deel 3 script eleganter maken?


Femca

Vraag

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 naar reactie

3 antwoorden op deze vraag

Aanbevolen berichten

  • 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 naar reactie
  • 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 naar reactie
  • 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 naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...