webForumDet fria alternativet

Tidsproblem

Databaser & SQL

5 svar · 220 visningar · startad av reka1

Medlem sedan sep. 2001650 inlägg
Frågan#1

Håller på med ett bokningssystem. För att förhindra dubbelbokningar försöker jag få till en sql-sats som "känner av" ifall tiden redan är bokad.

Om. te.x. tiden 11:30 försöks bokas men ngn annan har redan tagit från 11:00 till 12:00 så stoppas det hela.

Kör med access.

Medlem sedan mars 20034 471 inlägg
#2

Hur ser databasens struktur ut?

Medlem sedan sep. 2001650 inlägg
#3

Själva tidskolumnerna är enkla. En "s-tid" (starttid) och en "a-tid" (avslutningstid).
Formatet är i stil med "17:30", "08:00", osv

Medlem sedan mars 20034 471 inlägg
#4

Sök efter bokningar som omfattar vald tid och kolla att resultatet är tomt innan du sätter in.

Select * from Bokning where min_tid >= s-tid and min_tid <= a-tid;

min_tid är den du vill boka. Sedan får du kolla om du fick träff.
Om nej ==> bra, boka på
Om ja ==> trist, upptaget

Du kan ju ev. vilja kolla att det är samma datum också, då får du slänga in det i where-klausulen.

Medlem sedan sep. 2001650 inlägg
#5

Tack för svar. Men dessvärre är det ett problem.
Starttiden: 10:00 och sluttiden 11:00 finns lagrad i databasen.
Anger man starttid 10:00 o sluttid 11:00 i inmatningen får man beskedet att lokalen är ledig.
Anger man däremot starttid 10:01 o med samma sluttid får man besked om att lokalen är ledig :-/

Medlem sedan sep. 2001650 inlägg
#6

Det har löst sig :-) Fick hjälp från annat håll. Den korrekta sql:en ser ut som följer.

SQL = "select * from bokningsinfo where starttid >= #" & starttid & "# and starttid <= #" & sluttid & "# or sluttid >= #" & starttid & "# and sluttid <= #" & sluttid & "#"

248 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)