Momenteel ben ik bezig met een planningssysteem in Access. Dit systeem heeft al een jaar of 3 naar behoren gewerkt, alleen wil ik nu graag de interface waarmee de planning aangepast wordt optimaliseren. Eigenlijk heb ik dan ook twee vragen (want twee deelgebieden).
Allereerst genereer ik op mijn nieuwe planningsformulier alle dagen voor de komende maand, en de bijbehorende shifts. Via een Do While loop en de DateAdd functie genereer ik een lijst van data. Hierna haal ik voor die bepaalde dag alle shifts op uit de database. Binnen deze loop zit een tweede Do While loop die de recordset afloopt en uiteindelijk de elementen in de lijst plaatst.
Nu zijn er eigenlijk maar drie afzonderlijke subsets van shifts in de database. Dit kunnen er wel meer worden, maar in de huidige configuratie zijn het er maar drie. Probleem is dat het opbouwen van de lijst aardig wat tijd kost. Zou het een oplossing zijn om bijvoorbeeld bij het begin van deze functie 3 arrays aan te maken en hier de shifts in te stoppen. Je hoeft de database dan maximaal maar drie keer aan te spreken. Of bijvoorbeeld drie "shiftobjecten"?
Het volgende heeft betrekking op een controleprocedure die plaatsvindt bij het inplannen van een persoon. Het systeem checkt of de werknemer niet meer dan 8 uur gaat werken op die dag, of de werknemer niet al ingepland is voor die shift, of de werknemer geen overlappende shifts heeft en tot slot of er binnen het bedrijf wel genoeg ruimte is om die werknemer te laten werken. Ook dit zijn weer allemaal afzonderlijke databasebewerkingen die veel tijd kosten. Hoe ik dit ga optimaliseren weet ik nog niet, maar zou het een idee zijn om een werknemer object te maken, deze te instantieren met de planning van desbetreffende werknemer (vanuit de DB) en dan het object te querien (en de DB met rust te laten)?
Iets laten werken is moeilijk, iets snel laten werken is helemaal pittig.
Allereerst genereer ik op mijn nieuwe planningsformulier alle dagen voor de komende maand, en de bijbehorende shifts. Via een Do While loop en de DateAdd functie genereer ik een lijst van data. Hierna haal ik voor die bepaalde dag alle shifts op uit de database. Binnen deze loop zit een tweede Do While loop die de recordset afloopt en uiteindelijk de elementen in de lijst plaatst.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Do While datum < eindDatum ... Ophalen shifts uit de database ... Do While nog niet laatste record / shift ... ElementToevoegen(datum, shift) ... Loop ... datum = datum +1 ... Loop |
Nu zijn er eigenlijk maar drie afzonderlijke subsets van shifts in de database. Dit kunnen er wel meer worden, maar in de huidige configuratie zijn het er maar drie. Probleem is dat het opbouwen van de lijst aardig wat tijd kost. Zou het een oplossing zijn om bijvoorbeeld bij het begin van deze functie 3 arrays aan te maken en hier de shifts in te stoppen. Je hoeft de database dan maximaal maar drie keer aan te spreken. Of bijvoorbeeld drie "shiftobjecten"?
Het volgende heeft betrekking op een controleprocedure die plaatsvindt bij het inplannen van een persoon. Het systeem checkt of de werknemer niet meer dan 8 uur gaat werken op die dag, of de werknemer niet al ingepland is voor die shift, of de werknemer geen overlappende shifts heeft en tot slot of er binnen het bedrijf wel genoeg ruimte is om die werknemer te laten werken. Ook dit zijn weer allemaal afzonderlijke databasebewerkingen die veel tijd kosten. Hoe ik dit ga optimaliseren weet ik nog niet, maar zou het een idee zijn om een werknemer object te maken, deze te instantieren met de planning van desbetreffende werknemer (vanuit de DB) en dan het object te querien (en de DB met rust te laten)?
Iets laten werken is moeilijk, iets snel laten werken is helemaal pittig.