Avatar billede pezzo Nybegynder
12. januar 2003 - 22:46 Der 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") & ""
Avatar billede _darkstar_ Nybegynder
12. januar 2003 - 23:43 #1
På menneskesprog:

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.
Avatar billede pezzo Nybegynder
13. januar 2003 - 07:42 #2
Ja det kom jeg jo ikke videre med!

Ingen af dine forslag virker.. :(

Et eksempel på mit problem:

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!

Så skal den stoppe...

HEEELP!
Avatar billede dr-data Nybegynder
13. januar 2003 - 14:51 #3
dette skulle kunne gøre det.... ;-)

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... :-)

/Vania
Avatar billede dr-data Nybegynder
13. januar 2003 - 14:54 #4
OEF = Eof
Avatar billede dr-data Nybegynder
13. januar 2003 - 15:01 #5
sådan da.... mangler med dato'erne......

så prøv denne:

st_tid = request("startclock")
sl_tid = request("slutclock")
st_dato = request("startdato")
sl_dato = request("slutdato")
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 & "# And startdate Between #" & st_dato & "# AMD #" & sl_dato & "# And slutdate Between #" & st_dato & "# AND #" & sl_dato & "#"
Avatar billede dr-data Nybegynder
13. januar 2003 - 17:52 #6
Avatar billede dr-data Nybegynder
13. januar 2003 - 18:03 #7
hehe, skulle være svar....
Avatar billede pezzo Nybegynder
13. januar 2003 - 23:08 #8
Har prøvet dine, men synes sq ik det hjælper.. Ja nok fordi der er en fejl i sætningen..

Bruger den her:

strB = "SELECT * FROM book WHERE lokale = '" & request("lokale") & "' AND startdato = #" & strActCCCCDate & "# and

startclock = " & request("startclock") & " and slutclock = " & request("slutclock") & " and not id = " & request("id") & ""

strB = strB & " or lokale = '" & request("lokale") & "' AND startdato = #" & strActCCCCDate & "# and " &

request("startclock") & " BETWEEN startclock and slutclock and not id = " & request("id") & ""

strB = strB & " or lokale = '" & request("lokale") & "' AND startdato = #" & strActCCCCDate & "# and " &

request("startclock") & " > slutclock AND not id = " & request("id") & ""
Avatar billede pezzo Nybegynder
13. januar 2003 - 23:08 #9
men problemet opstår stadigvæk... :(
Avatar billede dr-data Nybegynder
14. januar 2003 - 10:18 #10
kan du med ord forklare hvad den skal kunne (Sql'en du har postet)
således at jeg lettere kan forstå din sql ;-) (gav det mening?)

/Vania
Avatar billede pezzo Nybegynder
14. januar 2003 - 15:24 #11
Forklaring på det som jeg har problem med jo:

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 18:00 til 22:00. Og ja, den viser OK da klokken er over 20:00 jo... Men det må den ikke!
Avatar billede dr-data Nybegynder
14. januar 2003 - 15:42 #12
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.....
Avatar billede dr-data Nybegynder
14. januar 2003 - 15:46 #13
"gør"
Avatar billede pezzo Nybegynder
16. januar 2003 - 13:33 #14
dr-data > ideen bag ID nummeret er til fordel, ved at en bookingtid skal flyttes til ny tid.

Men ved søgning af ny ide bruges dette ikke.. Tænk ikke så meget på det!

hvad mener du??? jf. citat ..."hvad er det som din Sql som du har postet 13/01-2003 23:08:26 ???"...
Avatar billede pezzo Nybegynder
23. januar 2003 - 20:35 #15
lukker.... :'(
Avatar billede _darkstar_ Nybegynder
23. januar 2003 - 22:06 #16
Undskyld. Jeg fulgte ikke ligefrem med....

Hvorfor virker dette her ikke?

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.
Avatar billede dhgpower Nybegynder
01. februar 2003 - 16:04 #17
_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.

Det er jo ik særlig smart!!
Avatar billede _darkstar_ Nybegynder
01. februar 2003 - 17:24 #18
Tag et stykke papir og tegn det op med nogle intervaller på en linie. Så får du løst problemet.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester