12. januar 2003 - 22:46Der er
17 kommentarer og 1 løsning
Bookingstid problemer
Hey!
Jeg er i gang med at bookingsystem, og den er opdelt i flere tidsintevaler. Det virker fint at undersøge om der ledigt fra eks 15:00 til 17:00 hvis der ik er noget. Men hvis der er noget kl. 20:00 og en søger under 15:00 til 23:30 siger den OK da den er "smuttet" over det.
Mit script er sådan her:
strB = "SELECT * from book where lokale = '" & request("lokale") & "' and " & request("startclock") & " BETWEEN startclock
AND slutclock and startdato = #" & strActCCCCDate & "# and not id = " & request("id") & " or lokale = '" &
request("lokale") & "' and " & request("slutclock") & " BETWEEN slutclock AND startclock and startdato = #" &
strActCCCCDate & "# and not id = " & request("id") & ""
SELECT * FROM book WHERE lokale = <lokalet> AND <startclock> BETWEEN startclock AND slutclock AND startdato = <startdato> AND NOT id = <noget> OR lokale = <lokalet> AND <slutclock> BETWEEN slutclock AND startclock AND startdato = <startdato> AND NOT id = <noget>
Det er hvad du skrev ovenfor, blot med pseudokoder, så det er til at overskue.
Der er nogle ting med paranteser og den slags. Indledningsvis kan man skrive det om til:
SELECT * FROM book WHERE lokale = <lokalet> AND (<startclock> BETWEEN startclock AND slutclock OR <slutclock> BETWEEN slutclock AND startclock ) AND startdato = <startdato> AND NOT id = <noget>
Det er nemmere at overskue - det gør det samme. Nu er det så overskueligt at jeg kan se fejlen.
Hvis du ønsker at foretage en forespørgsel, hvor alle møder, der begynder og slutter indenfor dit interval, skal det se sådan her ud:
SELECT * FROM book WHERE lokale = <lokalet> AND <startclock> < startclock AND <slutclock> > startclock AND startdato = <startdato> AND NOT id = <noget>
Hvis du ønsker alle møder som er igang indenfor det givne interval:
SELECT * FROM book WHERE lokale = <lokalet> AND (<startclock> < slutclock AND <slutclock> < startclock OR <slutclock> > startclock AND <startclock> < slutclock OR <startclock> < startclock AND <slutclock> > startclock) AND startdato = <startdato> AND NOT id = <noget>
Prøv at tegne det på et stykke papir med nogle intervaller på en tidslinie. Det gør det noget nemmere at analysere.
Hugo har booket Lokale1 kl. 15:00 til 16:00 Viggo har booket Lokale1 kl. 17:00 til 20:00
Så kommer Jens og vil søge om ledig tid på Lokale1 mellem 17:00 til 22:00. Og jo, den viser jo OK da klokken er overvejer 20:00 jo... Men det må den ikke!
st_tid = request("startclock") sl_tid = request("slutclock") lok = request("lokale")
strB = "SELECT * from book where lokale = '" & lok & "' And startclock Between #" & st_tid & "# AMD #" & sl_tid & "# And slutclock Between #" & st_tid & "# AND #" & sl_tid & "#"
Hvis så fx. din Rs.OEF = true, vd du at der ikke er booket noget inden for de valgte tider... :-)
strB = "SELECT * from book where lokale = '" & lok & "' And startclock Between #" & st_tid & "# AMD #" & sl_tid & "# And slutclock Between #" & st_tid & "# AND #" & sl_tid & "# And startdate Between #" & st_dato & "# AMD #" & sl_dato & "# And slutdate Between #" & st_dato & "# AND #" & sl_dato & "#"
ja, men hvad er det som din Sql som du har postet 13/01-2003 23:08:26 ??? - jeg har lidt svært ved at forstår hvorfor du fx. skriver dette: (AND not id = " & request("id") & "") - hvad er Id, hvad bruges den til.....
SELECT * FROM book WHERE lokale = <lokalet> AND (<startclock> < slutclock AND <slutclock> < startclock OR <slutclock> > startclock AND <startclock> < slutclock OR <startclock> < startclock AND <slutclock> > startclock) AND startdato = <startdato> AND NOT id = <noget>
Du skriver bare at de ikke virker, men det kan jeg ikke bruge til noget. Du bliver nødt til at beskrive hvad det gør forkert.
_darkstar_ > Har lige prøvet og den virker ikke helt. Fordi booker jeg tid kl. 20:30 til 21:00 siger den ved søgning 15:00 til 16:00 at tiden er optaget.
Tag et stykke papir og tegn det op med nogle intervaller på en linie. Så får du løst problemet.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.