Ik ben momenteel bezig met het maken van een systeem om werknemers in te plannen voor bepaalde dagen. Ik gebruik een kalenderbesturingselement om de datum te kiezen en een drop-down list om de werknemer te kiezen. Daarnaast wordt er nog gebruik, gemaakt van een tijd.
De achterliggende tabel Planning ziet er zo uit:
PlanningID is dus de PK, TijdID verwijst naar een andere tabel waarin vaste werktijden zijn aangegeven (TijdID 1 is bv. van 17:00 - 21:00, we werken met shifts). Datum is de datum dat er gewerkt wordt en AgentID tot slot is het ID van de werknemer.
Om een nieuwe planning toe te voegen heb ik de volgende query gemaakt:
Met behulp van wat VB code is het niet mogelijk om een planning toe te voegen zonder AgentID, DatumID of TijdID.
So far so good. Alles werkt precies zoals ik het wil, op een klein maar vitaal element na.
Helaas is het namelijk mogelijk om een werknemer vaker voor dezelfde datum en tijd in te plannen. Zo kan het voorkomen dat werknemer 2 drie keer op dezelfde dag en dezelfde tijd ingepland staat. Wat ik dus wil is dat dat niet mogelijk is. Handen uit de mouwen dus, query gemaakt:
Ook dit werkt, als je nu op het formulier een datum, tijd en werknemer hebt geselecteerd en die werkt dan al, dan geeft de query een 1 terug. Wat ik nu dus wil is dat de query uitgevoerd wordt in VB, en dat de code die bij de knop hoort om de query aan te roepen niet uitgevoerd wordt.
Iets als:
Maar wie o wie weet hoe dit precies moet?!?!
De achterliggende tabel Planning ziet er zo uit:
code:
1
| PlanningID(PK), TijdID, Datum, AgentID |
PlanningID is dus de PK, TijdID verwijst naar een andere tabel waarin vaste werktijden zijn aangegeven (TijdID 1 is bv. van 17:00 - 21:00, we werken met shifts). Datum is de datum dat er gewerkt wordt en AgentID tot slot is het ID van de werknemer.
Om een nieuwe planning toe te voegen heb ik de volgende query gemaakt:
code:
1
2
| INSERT INTO Planning (Datum, AgentID, TijdID) SELECT [Kalenderbesturingselement], [Dropdown werknemer], [Tijd] |
Met behulp van wat VB code is het niet mogelijk om een planning toe te voegen zonder AgentID, DatumID of TijdID.
So far so good. Alles werkt precies zoals ik het wil, op een klein maar vitaal element na.
Helaas is het namelijk mogelijk om een werknemer vaker voor dezelfde datum en tijd in te plannen. Zo kan het voorkomen dat werknemer 2 drie keer op dezelfde dag en dezelfde tijd ingepland staat. Wat ik dus wil is dat dat niet mogelijk is. Handen uit de mouwen dus, query gemaakt:
code:
1
2
3
4
5
| SELECT count(p.PlanningID) FROM Planning p WHERE p.AgentID = [Dropdown werknemers] AND p.Datum = [Kalenderbesturingselement] AND p.TijdID = [Tijd] |
Ook dit werkt, als je nu op het formulier een datum, tijd en werknemer hebt geselecteerd en die werkt dan al, dan geeft de query een 1 terug. Wat ik nu dus wil is dat de query uitgevoerd wordt in VB, en dat de code die bij de knop hoort om de query aan te roepen niet uitgevoerd wordt.
Iets als:
code:
1
2
3
4
| If [QueryTel] > 0 Then
MsgBox("Werknemer al ingepland")
Else {Querytoevoegen]
End If |
Maar wie o wie weet hoe dit precies moet?!?!