Ik ben met een applicatie waar ik moet controleren of een item al in een bepaalde periode valt.
Dus in de database kunnen zich records volgens dit principe bevinden.
Nu mogen er dus geen records inkomen die een gelijke datum hebben of een datum die tussen een bepaald periode liggen.
Mogelijke inserts kunnen dus zijn. Deze zijn allemaal ongeldig omdat ze ofwel een zelfde jaar bevatten of ze vallen in een periode die al in de database zitten. Dus niets mag in overlapping liggen.
Ik haal dus eerst de records op uit de database en steek die in een lijst.
En loop dan over de lijst. Zoals je kan zien line.YearFrom en line.YearTo komt uit de DB.
De YearFrom en YearTo is het item dat ik wil ingeven. Dus een waarde zoals uit de tabel hierboven.
Maar ik heb het gevoel dat ik in mijn eerste tabel nog mogelijke waardes vergeet. Hoe kan je zoiets best aanpakken. Om alle mogelijke combinaties te bekomen?
En deze dan perfect om te bouwen naar code.
Dus in de database kunnen zich records volgens dit principe bevinden.
Id | Naam | YearFrom | YearTo |
1 | S001 | 2010 | 2010 |
2 | S002 | 2015 | 2020 |
Nu mogen er dus geen records inkomen die een gelijke datum hebben of een datum die tussen een bepaald periode liggen.
Mogelijke inserts kunnen dus zijn. Deze zijn allemaal ongeldig omdat ze ofwel een zelfde jaar bevatten of ze vallen in een periode die al in de database zitten. Dus niets mag in overlapping liggen.
Naam | YearFrom | YearTo |
S003 | 2010 | 2010 |
S004 | 2009 | 2010 |
S005 | 2009 | 2011 |
S006 | 2016 | 2019 |
S006 | 2016 | 2021 |
Ik haal dus eerst de records op uit de database en steek die in een lijst.
En loop dan over de lijst. Zoals je kan zien line.YearFrom en line.YearTo komt uit de DB.
De YearFrom en YearTo is het item dat ik wil ingeven. Dus een waarde zoals uit de tabel hierboven.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| For Each line In OpgehaaldlijnenDB If yearFrom = line.YearFrom Or yearFrom = line.YearUntil Then Return InvalidResponse(Translations.ErrorValidateStandardBaremaExistsAlready) End If If yearTo = line.YearFrom Or yearTo = line.YearUntil Then Return InvalidResponse(Translations.ErrorValidateStandardBaremaExistsAlready) End If If line.YearFrom < yearFrom AndAlso line.YearUntil > yearFrom Then Return InvalidResponse(Translations.ErrorValidateStandardBaremaExistsAlready) End If If line.YearUntil < yearTo AndAlso line.YearUntil > yearTo Then Return InvalidResponse(Translations.ErrorValidateStandardBaremaExistsAlready) End If If line.YearFrom < yearFrom AndAlso line.YearFrom > yearTo Then Return InvalidResponse(Translations.ErrorValidateStandardBaremaExistsAlready) End If If line.YearUntil > yearFrom AndAlso line.YearUntil > yearTo Then Return InvalidResponse(Translations.ErrorValidateStandardBaremaExistsAlready) End If Next |
Maar ik heb het gevoel dat ik in mijn eerste tabel nog mogelijke waardes vergeet. Hoe kan je zoiets best aanpakken. Om alle mogelijke combinaties te bekomen?
En deze dan perfect om te bouwen naar code.