Ga naar inhoud
  • 0

Planning script


Urfried

Vraag

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

2 antwoorden op deze vraag

Aanbevolen berichten

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