OK, ik m'n vragen maar even opgespaard zodat ik ze netjes in een topic kan plaatsen. Eerst een situatieschets:
Voor m'n werk ben ik een personeelssysteem aan het bouwen. Dit alles gebeurt in Access (dit ivm koppig systeembeheer). De bedoeling is dat dit systeem nagenoeg alles bij gaat houden: NAWT gegevens, roosters, contracten, ziekte, beoordelingen etc.
Het leuke is dat ik ondertussen al een heel eind ben met de voltooiing van het systeem, maar dat er nog een aantal kleine probleempjes zijn die ik nog moet tackelen.
[Probleem 1]
Werknemers (vanaf nu noem ik ze Agents) hebben een Datum in dienst (DID), oftewel de dag dat het contract ingaat. Nu wordt er gewerkt met contractperiodes van 6 maanden. Wat ik wil is dat ik bij de DID automagisch 6 maanden op kan tellen.
N00b approach van mij was om er dan gewoon 182,5 dagen bij op te tellen, maar dat is juridisch gezien niet echt slim. Letter van het contract is namelijk dat het 6 maanden zijn. Van 28 februari tot 28 augustus, of van 30 augustus tot 28 februari bijvoorbeeld. Gewoon dagen erbij optellen is dus niet de oplossing.
Met de functie DateDiff kan je wel uitrekenen hoeveel maanden er zijn verstreken, maar als iemand mij kan vertellen of er een functie is waarmee je bij een datum 6 maanden op kan tellen dan zou ik zeer dankbaar zijn!
[/Probleem 1]
[Probleem 2]
Het bedrijf waar ik werk is een call-center. We hebben 66 werkplekken. Het inplannen van agents gebeurt dmv een formulier waar een kalenderbesturingselement op zit. Inplannen van agents werkt als een trein, het enige probleem waar ik tegenaan loop is dat ik het onmogelijk wil maken om meer dan 66 agents in te plannen op een dag/shift.
Daar had ik het volgende stukje SQL voor uitgedacht:
Deze query werkt goed. Hij hoest netjes het aantal ingeplande agents op dat ingepland is op dag x. Bij het omzetten naar VB gaat er echter iets mis. Netjes SQL in een strSQL gezet als volgt:
Daarna een nieuwe recordset rst aangemaakt. Daarna het volgende stukje code aangemaakt:
Vreemd genoeg gaat er hier iets mis. Als er op dag x geen agents ingepland zijn dan is rst.RecordCount 0. Is er wel een agent (eentje dus maar) ingepland, dan telt ie niet alleen alle agents die op dag x zijn ingepland, maar meteen alle agents die in de tabel planning staan (Alle planningID's dus). Uitermate vreemd, aangezien het bij de gewone query wel goed ging.
Ook hier weer: iemand een oplossing?
[/Probleem 2]
[Probleem 3]
Hmmm, tis nu al een flinke lap tekst geworden, en m'n geheugen laat me in de steek, dus die komt nog wel!
[/Probleem 3]
Voor m'n werk ben ik een personeelssysteem aan het bouwen. Dit alles gebeurt in Access (dit ivm koppig systeembeheer). De bedoeling is dat dit systeem nagenoeg alles bij gaat houden: NAWT gegevens, roosters, contracten, ziekte, beoordelingen etc.
Het leuke is dat ik ondertussen al een heel eind ben met de voltooiing van het systeem, maar dat er nog een aantal kleine probleempjes zijn die ik nog moet tackelen.
[Probleem 1]
Werknemers (vanaf nu noem ik ze Agents) hebben een Datum in dienst (DID), oftewel de dag dat het contract ingaat. Nu wordt er gewerkt met contractperiodes van 6 maanden. Wat ik wil is dat ik bij de DID automagisch 6 maanden op kan tellen.
N00b approach van mij was om er dan gewoon 182,5 dagen bij op te tellen, maar dat is juridisch gezien niet echt slim. Letter van het contract is namelijk dat het 6 maanden zijn. Van 28 februari tot 28 augustus, of van 30 augustus tot 28 februari bijvoorbeeld. Gewoon dagen erbij optellen is dus niet de oplossing.
Met de functie DateDiff kan je wel uitrekenen hoeveel maanden er zijn verstreken, maar als iemand mij kan vertellen of er een functie is waarmee je bij een datum 6 maanden op kan tellen dan zou ik zeer dankbaar zijn!
[/Probleem 1]
[Probleem 2]
Het bedrijf waar ik werk is een call-center. We hebben 66 werkplekken. Het inplannen van agents gebeurt dmv een formulier waar een kalenderbesturingselement op zit. Inplannen van agents werkt als een trein, het enige probleem waar ik tegenaan loop is dat ik het onmogelijk wil maken om meer dan 66 agents in te plannen op een dag/shift.
Daar had ik het volgende stukje SQL voor uitgedacht:
code:
1
2
3
4
| SELECT COUNT(p.PlanningID) FROM Planning p WHERE p.Datum = [Datum uit kalenderbesturingselement] AND p.Shift = [Shiftinfo op formulier] ; |
Deze query werkt goed. Hij hoest netjes het aantal ingeplande agents op dat ingepland is op dag x. Bij het omzetten naar VB gaat er echter iets mis. Netjes SQL in een strSQL gezet als volgt:
code:
1
2
3
4
| SELECT p.PlanningID FROM Planning p WHERE p.Datum = [Datum uit kalenderbesturingselement] AND p.Shift = [Shiftinfo op formulier] ; |
Daarna een nieuwe recordset rst aangemaakt. Daarna het volgende stukje code aangemaakt:
code:
1
2
3
4
5
6
| AantalAgents = rst.RecordCount
If AantalAgents > 66 Then
MsgBox("Er zijn teveel agents ingepland")
Else
[query om agent toe te voegen]
End If |
Vreemd genoeg gaat er hier iets mis. Als er op dag x geen agents ingepland zijn dan is rst.RecordCount 0. Is er wel een agent (eentje dus maar) ingepland, dan telt ie niet alleen alle agents die op dag x zijn ingepland, maar meteen alle agents die in de tabel planning staan (Alle planningID's dus). Uitermate vreemd, aangezien het bij de gewone query wel goed ging.
Ook hier weer: iemand een oplossing?
[/Probleem 2]
[Probleem 3]
Hmmm, tis nu al een flinke lap tekst geworden, en m'n geheugen laat me in de steek, dus die komt nog wel!
[/Probleem 3]