Jump to content
  • 0

Planning script


Urfried

Question

Ik heb een vakantieplanning, met alle vakantiedagen in een jaar.

 

Bij het maken van de planning voor een cursus, maak ik op basis van een startdatum, cursusfrequentie en cursusinterval, een nieuwe datum aan.

Tijdens het uitvoeren van het script, wil ik kijken of de nieuwe datum een vakantiedag is uit de vakantiedagen tabel.

 

Ik heb geen idee, hoe ik dat moet oplossen in het script.

 

Wie kan mij hierbij helpen??

 

Urfried Mendes

Zoetermeer

Link to comment

2 answers to this question

Recommended Posts

  • 0

Zoals zo vaak bij FM zijn er verschillende benaderingen mogelijk.

 

optie 1. Leg een relatie van de planningtabel naar de vakantiedagentabel, van het ene datumveld naar het andere (planning::datum = vakantiedagen::datum). Je kunt nu (vanuit planning) over die relatie kijken of er een vakantiedag zichtbaar is, door te testen op not IsEmpty( vakantiedagen::ID ) of eenvoudigweg not IsEmpty( vakantiedagen::datum ).

 

optie 2. Zet de beoogde planningsdatum in een lokale variabele ($datum bijv.), spring even naar een layout van de vakantiedagen, doe daar Set Error Capture[ On ], doe een Perform Find[] naar vakantiedagen::datum = $datum. Als je iets vindt ( test op Get( FoundCount ) > 0 ), was het een vakantiedag. Onthoud dat resultaat in een andere variabele, doe bijv. Set Variable[ $is_vakantiedag ; Get( FoundCount ) > 0 ], dit levert in de variabele een true of false op, die je later weer kunt gebruiken. Ga terug naar de Original Layout (van planning), en baseer de rest van je procedure op de de waarde van $is_vakantiedag. Voordeel van deze methode: je hoeft er geen extra relatie voor aan te maken in het Relatieschema. Scheelt toch weer een beetje 'rommel'.

 

optie 3. Gebruik een SQL query (vanaf FM12):

Set variable[ $is_vakantiedag ; 
Let( query = "SELECT * FROM vakantiedagen WHERE datum = ?" ; not IsEmpty( ExecuteSQL( query ; "" ; "" ; planning::datum ) ) )

Wees precies met het intypen van de juiste veld- en tabelnaam (eigenlijk TO-naam), ExecuteSQL geeft alleen maar "?" als er typfouten in zitten.

Na deze scriptstap zou $is_vakantiedag ook een true of false moeten bevatten, waar je in het vervolg op kunt testen: If( $is_vakantiedag ; ... ; ... )

Voordeel: ook hier heb je geen aparte relatie naar vakantiedagen nodig (net als bij 2), en het is ook nog eens een tamelijk compacte scriptstap, waarvoor je niet van je planningslayout af hoeft.

 

Klein puntje: in deze opzet wordt aangenomen dat je met vakantiedagen feestdagen bedoelt, die voor iedereen gelden. Als het erom gaat te bepalen of sommige deelnemers/cursusleiders/wie dan ook voor de boogde datum toevallig individueel vakantie hebben ingepland, komt het aspect van de persoon waaraan die vakantiedag gekoppeld is er nog bij.

 

HTH, Peter

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