select 1 from t
where <din-starttid> between bokad_start and bokad_slut
or <din-sluttid> between bokad_start and bokad_slut
Om du får någon post tillbaka så är det bokat.
16 svar · 413 visningar · startad av mattiasnordin
Hej,
Jag behöver hjälp att konstruera en fråga som kontrollerar om en viss datumperiod är ledig i en kalender eller ej.
Tabellen ser ut som följande:
bokad_start | bokad_slut | bokad_av | osv...
bokad_start och bokad_slut innehåller datum och tid (2004-04-12 14:00).
Jag behöver en fråga som kontrollerar om det finns ledig tid i min kalender innan jag lägger in ny data.
Förstår någon vad jag menar? :q
select 1 from t
where <din-starttid> between bokad_start and bokad_slut
or <din-sluttid> between bokad_start and bokad_slut
Om du får någon post tillbaka så är det bokat.
Det känns rätt, men jag får inte riktigt till det...
select 1 from T_bokad_av_användare WHERE 2003-07-11 14:46 BETWEEN bokad_start AND bokad_slut OR 2003-07-11 15:46 BETWEEN bokad_start AND bokad_slut
--------------------------------------------------------------------------------
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression '2003-07-11 14:46 BETWEEN bokad_start AND bokad_slut OR 2003-07-11 15:46 BETWEEN bokad_start AND bokad_slut'.
/script_booking/show_selected_product.asp, line 37
Båda bokad_start och bokad_slut är i textform i databasen. Ska jag ändra det till ett datum?
Är det ett syntaxfel?
Du saknar apostrofer runt värdena, och, ja datumvärden skall alltid vara av rätt datatyp i tabellen.
Inte sätter du en klisterlapp som det står "strumpor" på på din kalsonglåda för att det var enklare att stava till? ;)
;-)
Får inte riktigt till det. Får inte något felmeddelande men jag kan inte provocera fram en träff (dvs boka på ett redan bokat datum).
select 1 from T_bokad_av_användare WHERE #2003-03-11 14:46# BETWEEN bokad_start AND bokad_slut OR #2003-09-11 15:46# BETWEEN bokad_start AND bokad_slut
bokad_start och bokad_slut är nu i datumformat.
Vad kan jag göra för fel? I databasen finns det (bokad_start = 2003-04-05 12:00:00) (bokad_slut = 2003-04-06 14:00:00)
Vad betyder SELECT 1 ?
"Hämta siffran 1"
Godtyckligt värde alltså, det gäller ju bara att hämta en flagga någonting finns.
Mvh
Det är inget fel. Det finns nämligen ingen tid bokad innan 2003-03-11 och ingen tid efter 2003-09-11.
SELECT 1 FROM T_bokad_av_användare
WHERE [i]start[/i] BETWEEN bokad_start AND bokad_slut
OR [i]stop[/i] BETWEEN bokad_start AND bokad_slut
OR ([i]start[/i] < Min(bokad_start) AND [i]stop[/i] > Max(bokad_start))
SELECT 1 innebär att frågan returnerar en etta för varje träff.
Vad göra för fel..?..
'kontrollerar om datumet är upptaget'
sql = "select 1 from T_bokad_av_användare "
sql = sql & " WHERE #" &sBookedFrom &"# BETWEEN bokad_start AND bokad_slut "
sql = sql & " OR #" &sBookedTo &"# BETWEEN bokad_start AND bokad_slut "
response.write sql &"<hr>"
set rsTest = connect.execute(sql) %>
<%if rsTest.eof then%>
<script>
alert("test")
</script>
<% else %>
TEST 2222222222222
<% end if %>
Jag använder access 2002 som databas. Får nu detta fel... Tack för hjälpen alla!
SELECT 1 FROM T_bokad_av_användare WHERE start BETWEEN bokad_start AND bokad_slut OR stop BETWEEN bokad_start AND bokad_slut OR (start < Min(bokad_start) AND stop > Max(bokad_start))
--------------------------------------------------------------------------------
Microsoft JET Database Engine error '80040e14'
Cannot have aggregate function in WHERE clause (start Between bokad_start And bokad_slut Or stop Between bokad_start And bokad_slut Or start<Min(bokad_start) And stop>Max(bokad_start)).
/script_booking/show_selected_product.asp, line 36
Åh... tro om det här kan fungera lite bättre
SELECT 1 FROM T_bokad_av_användare
WHERE start BETWEEN bokad_start AND bokad_slut
OR stop BETWEEN bokad_start AND bokad_slut
OR (start <= (SELECT Min(bokad_start) FROM T_bokad_av_användare) AND stop >= (SELECT Max(bokad_slut) FROM T_bokad_av_användare))
Ge inte upp nu Engine!
SELECT 1 FROM T_bokad_av_användare WHERE start BETWEEN bokad_start AND bokad_slut OR stop BETWEEN bokad_start AND bokad_slut OR (start <= (SELECT Min(bokad_start) FROM T_bokad_av_användare) AND stop >= (SELECT Max(bokad_slut) FROM T_bokad_av_användare))
--------------------------------------------------------------------------------
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/script_booking/show_selected_product.asp, line 41
Sorry, glömde att byta ut start och stop...
Det fungerar! Superbra! :-) 1000 tack Engine...!...
Trevligt, varsågod.