webForumDet fria alternativet

Access 07: Between A och B

3 svar · 466 visningar · startad av Mattias Nordin

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#1

Hej, jag behöver hjälp att förstå hur följande fråga fungerar. Jag använder koden nedan för att testa om bokningar redan finns i bokningsregistret...

sql =  "SELECT booking_id FROM T_bokad_av_användare "	      &_
" WHERE (#" &sFromDate &"# BETWEEN bokad_start AND bokad_slut "   &_
" OR #" &sToDate  &"# BETWEEN bokad_start AND bokad_slut "	      &_
" OR (#" &sFromDate &"# <= (SELECT Min(bokad_start) FROM T_bokad_av_användare) "	&_
" AND #" &sToDate  &"# >= (SELECT Max(bokad_slut) FROM T_bokad_av_användare)) "	&_
" ) AND produkt_id = " &sProductDbId

Jag fick hjälp att skriva den för några år sedan. Vill nu försöka pimpa upp den då jag inser att den gör en sak fel.

Om vi antar att följande bokningar finns sedan tidigare:

A 08:00 - 09:00

C 11:00 - 15:00

Och jag försöker sedan lägga till ytterligare en bokning mellan 09:00 - 10:00 så får jag en konflikt med A, vilket är något jag vill tillåta (bokningar bör få starta på samma minut).

Bokning med start 09:01 fungerar naturligtvis men användarna skriver alltid 09:00.

Tackasam för hjälp med att förstå Between syntaxen. :stud

LaspMedlem sedan juli 200012 980 inlägg
#2

Om du lägger till en minut på bokad_start och minskar med en minut på bokad_slut så bör du klara dig Eller acceptera lika med, Equal too

Mattias NordinMedlem sedan dec. 20051 056 inlägg
#3

Jag var inne på hur man får frågan att acceptera equal... men nu när du nämner det så är kanske det enklaste sättet det bästa. Lägger jag på sFromDate = DateAdd("N", 1, sFromDate) på startdatumet så fungerar det ju i princip alltid.

Alternativt så lägger jag bara på +1 på kontrollen som kontrollerar om bokning redan finns... får suga på det ett tag.

Tack Larsp för att hjälpa mig hitta stigen igen.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Jag tycker att det låter som en bra idé att lägga på en minut. :-)

Men nu står jag faktiskt inte ut längre: Mattias, Lasp heter Lasp, och inte Larsp. :)

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)