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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.