---
title: "Konstigt loop-fel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/8810-konstigt-loop-fel"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "LilleSkutt"
published: "2001-04-02T15:16:00.000Z"
updated: "2001-04-02T19:24:00.000Z"
replies: 9
views: 256
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/8810-konstigt-loop-fel"
---

# Konstigt loop-fel

## #1 — LilleSkutt, 2001-04-02T15:16Z

Hej!

Jag håller på att skapa en egen kalender mha ASP, men har fastnat lite granna...
Jag loopar upp alla dagar i en månad genom att hämta antalet månader från en array, så att rätt antal dagar per månad skrivs ut. Men det funkar ju icke... Det funkar på Februari månad men inte på någon annan!

```
arrManader = Array("Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December")
arrDaysOfMonth = Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31")

startColumn = Weekday(Now)-2

<><><>

For daysCounter = 1 To cInt(arrDaysOfMonth(currentMonth-1))
	If daysCounter Mod 5 = 0 then
		daysCounter = daysCounter + 1
		Response.Write "</tr>" & vbCrLf & "<tr>" & vbCrLf
	End If
	
	columnCounter = 0
	Do Until columnCounter = startColumn
		Response.Write "<td width=""79"" align=""center"">" & vbCrLf
		Response.Write "&nbsp;" & vbCrLf
		Response.Write "</td>" & vbCrLf
	columnCounter = columnCounter + 1
	Loop
	
	Response.Write "<td width=""79"" align=""center"">" & vbCrLf
	Response.Write "<font class=""calendarDay"">" & daysCounter & "</font>" & vbCrLf
	Response.Write "</td>" & vbCrLf
Next
```

Det är några fler småfel som jag kanske återkommer med om jag inte lyckas lösa dem, men just nu är det här problemet väldigt störande. Någon som ser vad felet beror på?

Permalänk: https://www.webforum.nu/p/8810

## #2 — LarsG, 2001-04-02T15:54Z

jaha, du kanske kan beskriva lite mer. Vad hade du tänkt att få ut egentligen och vad blir resultatet. Att bara säga att det blir fel är lite för vagt. Något felmeddelande som dyker upp kanske?

Frånsett det, varför har du denna

```
Do Until columnCounter = startColumn Response.Write "<td width=""79"" align=""center"">" & vbCrLf
Response.Write " " & vbCrLf
Response.Write "</td>" & vbCrLf
columnCounter = columnCounter + 1
Loop
```

inuti loopen? Borde den inte ligga utanför. 
Sen så kan ju värdet på startColumn bli negativt och i så fall borde man väl inte loopa överhuvudtaget.

Permalänk: https://www.webforum.nu/p/262318

## #3 — Nickemannen, 2001-04-02T16:28Z

Ett tips.. använd helst inte
Response.Write i Loopar,
Använd variabler istället
sidan laddas många gånger fortare då

Permalänk: https://www.webforum.nu/p/262319

## #4 — Palleman, 2001-04-02T16:32Z

Är det bara jag som faktiskt inte kan läsa vad det står mellan:

```

och
```

:q

(texten blir för liten... :( )

Permalänk: https://www.webforum.nu/p/262320

## #5 — LilleSkutt, 2001-04-02T16:36Z

LarsG -- Juste, den ska ligga utanför... Tyckte det såg skumt ut. Men den körs ju ändå bara en gång, då variabeln columnCounter sätts till ett värde som är lika stort som startColumn vid första körningen.

Felmeddelande blir det inget, utan det skrivs ut 31 dagar för alla måndare utom februari. Plus att det inte skrivs ut några tomma kolumner innan första dagen, om den är t.ex. en söndag som det är nu i april.

Nickemannen -- Ok, ett bra tips sitter aldrig fel :D 

Palleman -- Lessen för det, men man får en mycket bättre överblick på koden, då alla tabbar kommer med. Det är orsaken till att jag använder den.

Permalänk: https://www.webforum.nu/p/262321

## #6 — LilleSkutt, 2001-04-02T17:17Z

Okey, har fixat lite o pillat lite nu... Nu skriver den ut dagarna i rätt ordning, men jag lyckas ändå inte få till de där tomma kolumnerna som ska visas innan första dagen om dagen inte är en onsdag.

Några idéer?

Permalänk: https://www.webforum.nu/p/262322

## #7 — Palleman, 2001-04-02T17:20Z

**LilleSkutt:**
Aha, ok... det är nått man ställer in med WF-koden eller?

Rätt smart faktiskt.. visste jag inte om. Markerar jag texten så kan man lättare läsa.. :)

Permalänk: https://www.webforum.nu/p/262323

## #8 — LilleSkutt, 2001-04-02T17:26Z

Palleman -- Jajjamen, istället för \[ kod\] använder du \[ perl\] :)

Permalänk: https://www.webforum.nu/p/262324

## #9 — LilleSkutt, 2001-04-02T17:35Z

Weeee nu funkar det :D

Men.. Jag använder mig av sex(!) stycken If-satser för att skriva ut tomma kolumner, och jag tycker det borde gå att lösa på ett snyggare och enklare sätt.

```
If startColumn = vbSunday then
	For countColumns = 0 To 5
		Response.Write "<td width=""79"" align=""left"">" & vbCrLf & "&nbsp;" & vbCrLf & "</td>" & vbCrLf
	Next
	startCalendar = 6
ElseIf startColumn = vbSaturday then
	For countColumns = 0 To 4
		Response.Write "<td width=""79"" align=""left"">" & vbCrLf & "&nbsp;" & vbCrLf & "</td>" & vbCrLf
	Next
	startCalendar = 5
ElseIf startColumn = vbFriday then
	For countColumns = 0 To 3
		Response.Write "<td width=""79"" align=""left"">" & vbCrLf & "&nbsp;" & vbCrLf & "</td>" & vbCrLf
	Next
	startCalendar = 4
ElseIf startColumn = vbThursday then
	For countColumns = 0 To 2
		Response.Write "<td width=""79"" align=""left"">" & vbCrLf & "&nbsp;" & vbCrLf & "</td>" & vbCrLf
	Next
	startCalendar = 3
ElseIf startColumn = vbWednesday then
	For countColumns = 0 To 1
		Response.Write "<td width=""79"" align=""left"">" & vbCrLf & "&nbsp;" & vbCrLf & "</td>" & vbCrLf
	Next
	startCalendar = 2
ElseIf startColumn = vbTuesday then
	Response.Write "<td width=""79"" align=""left"">" & vbCrLf & "&nbsp;" & vbCrLf & "</td>" & vbCrLf
	startCalendar = 1
End If

For daysCounter = 0 To cInt(arrDaysOfMonth(currentMonth-1))-1
	If startCalendar Mod 7 = 0 then
		Response.Write "</tr>" & vbCrLf & "<tr>" & vbCrLf
	End If

	Response.Write "<td width=""79"" align=""center"">" & vbCrLf
	Response.Write "<font class=""calendarDay"">" & daysCounter+1 & "</font>" & vbCrLf
	Response.Write "</td>" & vbCrLf
	startCalendar = startCalendar + 1
Next
```

Lite omständig kod tycker jag...

Permalänk: https://www.webforum.nu/p/262325

## #10 — LilleSkutt, 2001-04-02T19:24Z

Hmmm ingen som har nåt att säga? Ovanligt. :)

Jag ändrade If-satserna till en Select Case-sats, lite snyggare, men inte mycket mindre kod.

Hur som helst, nytt problem! Jag vill inte skriva ut vilodagarna (lördag och söndag), någon som har någon idé?

Jag provade med att plussa till 2 på variabeln daysCounter, men det hjälper inte. Koden blir helt fel.

```
For daysCounter = 0 To cInt(arrDaysOfMonth(currentMonth-1))-1
	If startCalendar Mod 7 = 0 then
		Response.Write "</tr>" & vbCrLf & "<tr>" & vbCrLf
		daysCounter = daysCounter + 2
	End If
	Response.Write "<td width=""79"" align=""center"">" & vbCrLf
	Response.Write "<font class=""calendarDay"">" & daysCounter+1 & "</font>" & vbCrLf
	Response.Write "</td>" & vbCrLf
	startCalendar = startCalendar + 1
Next
```

Funkar alltså inte... Bättre idéer?

Permalänk: https://www.webforum.nu/p/262326

---

Tråden på webben: https://www.webforum.nu/amne/asp/8810-konstigt-loop-fel
