Ik heb al in verschillende topics gekeken, maar naar mijn idee vond ik daar nergens een oplossing (ergens kwam ik een stukje tegen over OVERLAPS in een query, maar deze werkt niet in Access 2003).
Het zit zo. Ik moet in mijn applicatie die in C# geprogrammeerd is, een form maken met een reserveringsmogelijkheid voor een sportaccommodatie (bijv. een voetbalveld of tennisbaan). Deze moet voor dat een reservering in de database gezet wordt, eerst checken of de ingevoerde begin- en einddatum i.c.m. de ingevoerde begin- en eindtijd niet vallen binnen een reserveringsperiode van een accommodatie die al gereserveerd is.
Een record uit mijn tabel ziet er als volgt uit:
Nu is het dus de bedoeling dat d.m.v. een COUNT() gekeken wordt of een ingevoerde combinatie van begin- eindtijd en begin- einddatum bijv ( 2-12-2005, 13:00 of 14:30, 2-12-2005, 14:30 of 15:30) wel of niet een bestaande reservering overlapt. In deze query blijft PersoonId buiten beschouwing en wordt AccommodatieId gebruikt om te counten.
De volgende query werkt deels, maar niet helemaal:
Heeft iemand ervaringen met dit soort SQL vraagstukken?
Bij voorbaat dank.
Het zit zo. Ik moet in mijn applicatie die in C# geprogrammeerd is, een form maken met een reserveringsmogelijkheid voor een sportaccommodatie (bijv. een voetbalveld of tennisbaan). Deze moet voor dat een reservering in de database gezet wordt, eerst checken of de ingevoerde begin- en einddatum i.c.m. de ingevoerde begin- en eindtijd niet vallen binnen een reserveringsperiode van een accommodatie die al gereserveerd is.
Een record uit mijn tabel ziet er als volgt uit:
| PersoonId | AccommodatieId | Begindatum | Begintijd | Einddatum | Eindtijd | |
| 2 | 2 | 2-12-2005 | 14:00 | 3-12-2005 | 15:00 |
Nu is het dus de bedoeling dat d.m.v. een COUNT() gekeken wordt of een ingevoerde combinatie van begin- eindtijd en begin- einddatum bijv ( 2-12-2005, 13:00 of 14:30, 2-12-2005, 14:30 of 15:30) wel of niet een bestaande reservering overlapt. In deze query blijft PersoonId buiten beschouwing en wordt AccommodatieId gebruikt om te counten.
De volgende query werkt deels, maar niet helemaal:
BETWEEN leek me geen goede oplossing aangezien ik verschillende kolomen van een datum en verschillende kolommen van een tijd heb.SELECT COUNT(AccommodatieId) FROM GastAccommodatie WHERE GastAccommodatie.Begindatum >= [Begindatum] AND GastAccommodatie.Einddatum <= [Einddatum] AND
(GastAccommodatie.Begintijd >= [Begintijd] OR GastAccommodatie.Eindtijd >= [Eindtijd]) AND GastAccommodatie.AccommodatieId = [AccommodatieId]
Heeft iemand ervaringen met dit soort SQL vraagstukken?
Bij voorbaat dank.