23. februar 2004 - 21:21Der er
31 kommentarer og 1 løsning
Finde ud af om der er optaget og efterfølgende ledighed
Jeg har en rigtig tricky en: Skal slå op i en accesDB om en valgt lørdag (StartDate) er ledig. -Altså om den ikke er mellem "FromDate" og "ToDate" i hver record hvor id = (valgt ID). Hvis den valgte lørdag ikke er ledig, skal der komme en fejlmeddelelse. Hvis lørdagen er ledig, kommer man til en bookingside, hvor der i en dropdownmenu skal kunne vælges hvor mange uger, der sammenhængede kan vælges inden næste optaede lørdag.
FromDate og ToDate er begge dato/tid-felter med kort datoformat
lige nu ser min SQL således ud: SQL = "Select * from booking where (sagsnummer=" & request.querystring("sagsnr") & ") AND ("&Cdate(StartDate)&" < FromDate AND "&Cdate(StartDate)&" > ToDate)"
Jeg får ingen fejl på den, men jeg at i DB'en er der booket (FromDate 07-02-2004) og (ToDate = 13-2-2004), så jeg burde få en fejl, når jeg spørger på 07-02-2004
SQL = "select * from tabelnavn where id = " & id & " and FromDate < #" & StartDateDB & "# AND ToDate > #" & StartDateDB & "#" Set rs = Conn.Execute(SQL) if not rs.EOF then 'Fejl der var en dato i databasen. Response.Write "Fejl ingen ledige" else 'find den næste optaget SQL = "select top 1 * from tabelnavn where id = " & id & " and fromDate >= #" & StartDateDB & "# order by fromDate" Set rs = Conn.Execute(SQL) if rs.EOF then 'Ingen slut dato, sæt max 10 uger frem slutDato = DateAdd("ww",10,StartDate) else slutDato = rs("fromDate") end if %> <select name="uger"> <option value="">Vælg antal uger</option> <% uger=1 StartDate = DateAdd("ww",1,StartDate) do while CDate(StarDate) <= CDate(slutDato) %> <option value="<%=uger%>"><%=uger%> til <%=StartDate%></option> <% StartDate = DateAdd("ww",1,StartDate) uger=uger+1 loop %> </select> <% end if
Ja det nok en god ide :) husk datoen skal formateres som yyyy-mm-dd eller mm-dd-yyyy via SQL og ikke som DK med dd-mm-yyyy, Access vil så bytte rundt på måned og dag.
hmm SQL skal havde et lig med også : SQL = "select * from booking where id = " & id & " and FromDate =< #" & StartDateDB & "# AND ToDate >= #" & StartDateDB & "#"
OK - så virker forespørgslen på om datoen er ledig... (har testet med d. 14-02-2004) Jeg får så lov at kunne vælge 5 uger frem til d. 12-03-2004, selv om min næste post i DB'en er d. 28-02-2004 (?)
det funger bare - jeg er skideglad for det :) Fik en ide til en forbedring, men ved ikke rigtigt, hvorfor det ikke virker...
Hvis datoen er optaget, vil jeg finde den førtkommende ledige lørdag: SQL2 = "select top 1 * from booking where sagsnummer = " & id & " and todate >= #" & StartDateDB & "# order by todate desc" Den viser rigtig nok den næste åbne periode i forhold til 1. request, men den næste periode er OGSÅ booket, og det skal den tage højde for ?????
okay - fandt en anden vej rundt om problemet, så det er ikke aktuelt alligevel :)
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.