Avatar billede CRavnkilde Nybegynder
17. august 2010 - 11:56 Der er 10 kommentarer og
2 løsninger

Loop funktion (do while - loop) timer out!

Hej!

Nedenstående script tæller antal værelser ud for en given dato. Hvis jeg slår loop'et fra, tæller scriptet fint for "aktueldato", men jeg vil gerne have talt og listet alle datoer i perioden (i eks. 2010/09/13 - 2010/09/18).

Hvad er der galt med koden?

--- start kode ---

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%

' Database forbindelse
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../../database/11243.mdb")

' Recordset object
Set objRs = Server.CreateObject("ADODB.Recordset")

' SQL
strSQL= "SELECT RoomReservation.Checkin, RoomReservation.Checkout FROM RoomReservation;"

' Tæl værelser
startdato = "2010/09/13"
slutdato = "2010/09/18"
aktueldato = startdato

do while startdato <> slutdato

set objRs=objConn.execute("select count(*) as antal from RoomReservation where Checkin <= '"&aktueldato&"' and Checkout>'"&aktueldato&"'")

response.write "<br>"&aktueldato&" = "& objRs("antal") &" V&aelig;relser"

aktueldato = dateadd("D",1,aktueldato)

loop

%>

--- stop kode ---
Avatar billede keysersoze Guru
17. august 2010 - 12:05 #1
Du ændrer ikke hverken startdato eller slutdato i din løkke - dermed har du lavet en uendelig løkke, så det skal du få lavet om på.
Avatar billede CRavnkilde Nybegynder
17. august 2010 - 12:16 #2
Tak, keysersoze! Kan du mon også hjælpe med hvordan jeg skærer den til?
Avatar billede Spotgun Seniormester
17. august 2010 - 12:25 #3
Prøv at rette "do while startdato <> slutdato" til "do while aktueldato <> slutdato"
Avatar billede CRavnkilde Nybegynder
17. august 2010 - 13:09 #4
@spotgun: Har gjort det, men får flg. fejl:

Active Server Pages, ASP 0113 (0x80004005)
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeout or by changing the value in the IIS administration tools.

Har sat timeout til 360 sek. på serveren...
Avatar billede keysersoze Guru
17. august 2010 - 14:29 #5
En sammenligning på en tekststreng og en dato vil også altid være forskellig fra hinanden - så sørg for at arbejde med samme datatype.
Avatar billede CRavnkilde Nybegynder
17. august 2010 - 14:45 #6
er det det formatet 2010/09/13, du hentyder til, Kim? Jeg tror, jeg må bruge en livlinie mere ;-)
Avatar billede keysersoze Guru
17. august 2010 - 15:19 #7
Nej - det er typen, så længe du ikke konverterer en værdi, fx ved at benytte cdate eller dateadd, vil det du har skrevet blive tolket som et tekst og ikke en dato.

http://www.w3schools.com/VBscript/vbscript_ref_functions.asp#date
Avatar billede CRavnkilde Nybegynder
17. august 2010 - 15:29 #8
OK - må lige læse den. Men, hvorfor kan den så godt vise resultatet en enkelt dag, altså uden loopet?
Avatar billede keysersoze Guru
17. august 2010 - 19:32 #9
Fordi du laver et uendeligt loop - din kode fungerer (forstået på den måde at der ikke er en egentlig fejl i den), men fordi løkken aldrig bliver færdig med at køre får klienten aldrig noget svar retur og serveren går død.
Avatar billede CRavnkilde Nybegynder
05. oktober 2010 - 20:54 #10
keysersoze og spotgun, gider I lægge "et svar", så får I nogle points.
Avatar billede Spotgun Seniormester
05. oktober 2010 - 20:58 #11
Værsgo
Avatar billede keysersoze Guru
06. oktober 2010 - 19:41 #12
svar :)
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