webForumDet fria alternativet

Loop hänger sig

ASP

15 svar · 383 visningar · startad av martinpartin

Medlem sedan jan. 2001373 inlägg
Frågan#1

Problem:

Min server hänger sig när jag kör denna kod:

t.ex. så är str_startdate = 2003-05-13 samt str_endate = 2003-05-30

Jag är säkert ute o cycklar.

nån som har nån idé ?

Dim str_startdate, str_enddate, str_count

str_enddate = Request.Form("enddate")

str_count = 0

str_startdate = DateAdd("d", str_count, ""& Request.Form("startdate") &"")

Do Until str_startdate = str_enddate

Response.Write(""& str_count &"<BR>")

str_count = str_count + 1
Loop

Mvh
Martin

Medlem sedan juni 200032 967 inlägg
#2

Du ändrar ju aldrig startdate inne i loopen, så värdet ändras ju aldrig. Sen undrar jag vad du har alla blankrader till? De försvårar läsning av koden. Sen kan det vara najs att indentera koden också, så man vet vad som hör till vad.Och varför lägger du till en tom sträng före och efter Request.Form("startdate")?

Dim str_startdate, str_enddate, str_count
str_enddate = Request.Form("enddate")
str_count = 0

Do Until str_startdate = str_enddate
     str_startdate = DateAdd("d", str_count, CDate(Request.Form("startdate")))
     Response.Write(""& str_count &"<BR>")
     str_count = str_count + 1
Loop
Medlem sedan dec. 20003 887 inlägg
#3

Fel ordning på saker och ting...

Dim str_startdate, str_enddate, str_count

str_count = 0
str_enddate = Request.Form("enddate")
str_startdate = Request.Form("startdate")

Do Until str_startdate = str_enddate
  Response.Write(""& str_count &"<BR>")

  DateAdd("d", 1, str_startdate)
  str_count = str_count + 1
Loop
Medlem sedan jan. 2001373 inlägg
#4

Tjusigt ;)

Ska tänka på det nästa gång. Tack för tipsen och ett snabbt svar.

Mvh
Martin

Medlem sedan jan. 2001373 inlägg
#5

Engine ?

DateAdd("d", 1, str_startdate)

Där 1:an e ska str_count stå va ?

Mvh
Martin

Medlem sedan dec. 20003 887 inlägg
#6

Nja, då blir felräkning... str_startdate ökas först med 1, sedan 2, 3 och så vidare.

str_count str_startdate
1 : 2003-05-15
2 : 2003-05-17
3 : 2003-05-20
.
.
.

Medlem sedan jan. 2001373 inlägg
#7

OK, fattar det nu.. tänkte lite annurlunda bara. Nu får jag detta otrevliga meddelande när jag kör med din kod

Microsoft VBScript compilation (0x800A0414)

på denna rad:

 DateAdd("d", 1, str_startdate)

Mvh
Martin :)

Medlem sedan dec. 20003 887 inlägg
#8

Cannot use parentheses when calling a Sub...

Lösningen till det är nog att ta bort paranteserna från DateAdd. Alltså: DateAdd "d", 1, str_startdate

Medlem sedan jan. 2001373 inlägg
#9

Fungerar inte loopen hänger sig igen...

?

Medlem sedan juni 200032 967 inlägg
#10

Engine^ skrev:

Cannot use parentheses when calling a Sub...

Lösningen till det är nog att ta bort paranteserna från DateAdd. Alltså: DateAdd "d", 1, str_startdate

Man kan inte bara bara skriva så. DateAdd() är en funktion som returnerar ett värde, därför måste man också ta emot det.

dteEttDatum = DateAdd ("d", 1, str_startdate)

Hur ser din kod ut nu?

Medlem sedan jan. 2001373 inlägg
#11

Som Engine´s:

Dim str_startdate, str_enddate, str_count

str_count = 0
str_enddate = Request.Form("enddate")
str_startdate = Request.Form("startdate")

Do Until str_startdate = str_enddate
  Response.Write(""& str_count &"<BR>")

  DateAdd("d", 1, str_startdate)
  str_count = str_count + 1
Loop
Medlem sedan dec. 20003 887 inlägg
#12

Ajaj... tur att det en snabelanders för felkorrigering ;)

Dim str_startdate, str_enddate, str_count

str_count = 0
str_enddate = Request.Form("enddate")
str_startdate = Request.Form("startdate")

Do Until str_startdate = str_enddate
  Response.Write(""& str_count &"<BR>")

  [b]str_startdate = DateAdd("d", 1, str_startdate)[/b]
  str_count = str_count + 1
Loop
Medlem sedan jan. 2001373 inlägg
#13

helt stört:


Dim str_startdate, str_enddate, str_count

str_startdate = 2003-05-25
str_enddate = 2003-05-29

str_count = 0

Do Until str_startdate = str_enddate
  Response.Write(""& str_count &"<BR>")

  str_startdate = DateAdd("d", 1, str_startdate)
  str_count = str_count + 1
Loop

Denna kod hänger loopen också..

Medlem sedan dec. 20003 887 inlägg
#14

Måste du inte innesluta datum med # i VBScript?

Som du skrev tror jag det tolkas som 2003 - 5 - 25 = 1973, således tolkas ditt stoppdatum som ett datum tidigare än ditt startdatum. Loopen kommer inte fram på ett bra tag med andra ord.

Medlem sedan juni 200032 967 inlägg
#15

Engine^ skrev:

Måste du inte innesluta datum med # i VBScript?

Som du skrev tror jag det tolkas som 2003 - 5 - 25 = 1973, således tolkas ditt stoppdatum som ett datum tidigare än ditt startdatum. Loopen kommer inte fram på ett bra tag med andra ord.

Det är korrekt. Man kan använda antingen # runt datum, eller Cdate("2003-05-23"), för att det ska hanteras som datumtyp, men absolut inte utan någonting runt.

Mvh

Medlem sedan jan. 2001373 inlägg
#16

Allt fungerar nu med följande kod:


Dim str_startdate, str_enddate, str_count

str_startdate = Cdate("2003-05-23")
str_enddate = Cdate("2003-05-28")
str_count = 0

Do Until str_startdate = str_enddate
  Response.Write(""& str_count &"<BR>")

  str_startdate = DateAdd("d", 1, str_startdate)
  str_count = str_count + 1
Loop

Tack för all hjälp ! :)

Mvh
Martin

250 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)