---
title: "Kalendern vill inte börja med första dagen i månden"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/78853-kalendern-vill-inte-börja-med-första-dagen-i-månden/page4"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-06-04T08:15:35.000Z"
updated: "2003-07-03T14:28:33.000Z"
replies: 86
views: 1722
page: 4
pages: 5
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/78853-kalendern-vill-inte-börja-med-första-dagen-i-månden"
---

# Kalendern vill inte börja med första dagen i månden

_Sida 4 av 5._

## #61 — solbulle, 2003-06-26T20:11Z

iDayMonth  = DatePart("d", DateSerial(Year(dteDate), Month(dteDate)+1, 0))

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

## #62 — plelkes, 2003-06-30T07:42Z

MItt nästa problem är att jag hela tiden får en rad med tomma (dvs svarta) celler. Så jag har försökt med (ändringen är i fet-stil)

```
For i = 0 to 41
If i mod 7 = 0 Then Response.Write "<TR>" 
If aKalender(i)= "" [B]And i mod < 7[/B] Then
Response.Write "<TD BGCOLOR=""#000000"">"
Response.Write " _" & "</TD>"
Else
Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
Response.Write aKalender(i) & " " 
Response.Write "</FONT></CENTER></TD>"
End If
Next

If i mod 6 = 0 And i <> 0 Then 
Response.Write "</TR>"
End If
```

Men får bara felmeddelandet:

> Microsoft VBScript compilation error '800a03ea' 
> Syntax error 
> If aKalender(i)= "" And i mod \< 7 Then
> \------------------------------^

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

## #63 — Engine^, 2003-06-30T07:51Z

```
If aKalender(i) = "" And i mod 7 > 0 Then
```

Menar du så?
Det är enklare att kolla på detta sätt

```
If i < iFirstDayIndex Or i > iLastDayIndex Then
```

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

## #64 — plelkes, 2003-06-30T08:02Z

Tyvärr funkar inget av dina förslag - dvs fel rutor blir svart färgade.
Det jag vill är att efter att månadens sista dag är i fylld , så kompleteras den tabellraden, och därefter 

```
Response.Write "</TABLE></BODY></HTML>"
```

 
Har även försökt med

```
Do Until i mod NOT 7
```

 
Men får inte till detta heller

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

## #65 — Engine^, 2003-06-30T08:54Z

Den sista dagen är iLastDayIndex, så när i \> iLastDayIndex uppfylls, så är den sista dagen i månaden utskriven. Bekymret du har kvar är att sista cellen du skriver ut troligtvis behöver få en colspan="x", där x = 7 - (i mod 7). Då bör du kunna skriva din loop på följande sätt

```
Response.Write "<table><tr>"

For i = 0 to iLastDayIndex
  If i mod 7 = 0 Then Response.Write "</tr><tr>"

  If i < iFirstDayIndex Then
    Response.Write "<td bgcolor=""black"">&amp;nbsp;</td>"
  Else
    Response.Write "<td align=""center"" valign=""middle"" bgcolor=""black"" style=""color: #330099;"">" & aKalender(i) & "</td>"
  End If
Next

x = 7 - (iLastDayIndex mod 7)

If x > 0 Then Response.Write "<td colspan=""" & x & """>&amp;nbsp;</td>"

Response.Write "</tr></table></body></html>"
```

Mod-operationen är precis som plus, minus eller division osv, så du kan inte kombinera den hur du vill.

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

## #66 — plelkes, 2003-06-30T09:08Z

Jag är ledsen Engine, men dit senaste kod verkar [inte fungera](http://www31.brinkster.com/plelkesprojekt/test_list.asp) 
Nedanstående kod genererar ovanstående sida

```
'låt oss skapa tabellen
Response.Write "<TABLE ALIGN=CENTER BORDER=1 CELLSPACING=1 WIDTH=75% HEIGHT=75% >"
Response.Write "<TH COLSPAN=7> <FONT SIZE=+2>"
'visa aktuell månad och år
   Response.Write MonthName(Month(dteDate))
   Response.Write ", " & Year(dteDate)

  Response.Write "</FONT> </TH>"
  Response.Write "<TR><TD><CENTER><B>"
  Response.Write "Måndag"  
  Response.Write "</B></CENTER></TD><TD><CENTER><B>"
  Response.Write "Tisdag"
  Response.Write "</B></CENTER></TD> <TD><CENTER><B>"
  Response.Write "Onsdag" 
  Response.Write "</B></CENTER></TD><TD><CENTER><B>"
  Response.Write "Torsdag"
  Response.Write "</B></CENTER></TD><TD><CENTER><B>"
  Response.Write "Fredag"
  Response.Write "</B></CENTER></TD><TD><CENTER><B>"
  Response.Write "Lördag"
  Response.Write "</B></CENTER></TD><TD><CENTER><B>"
  Response.Write "Söndag"
  Response.Write "</B></CENTER></TD></TR>"
  Response.Write "<tr>"

  For i = 0 to iLastDayIndex
  If i mod 7 = 0 Then Response.Write "</tr><tr>"

  If i < iFirstDayIndex Then
    Response.Write "<td bgcolor=""black"">&nbsp;</td>"
  Else
    Response.Write "<td align=""center"" valign=""middle"" bgcolor=""black"" style=""color: #330099;"">" & aKalender(i) & "</td>"
  End If
Next

x = 7 - (iLastDayIndex mod 7)

If x > 0 Then Response.Write "<td colspan=""" & x & """>&nbsp;</td>"

Response.Write "</tr></table></body></html>"
%>
```

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

## #67 — Engine^, 2003-06-30T09:17Z

Det blidde ett felmeddelande där... 

Microsoft VBScript runtime error '800a000d' 

Type mismatch: 'CDate' 

/plelkesprojekt/test_list.asp, line 35

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

## #68 — plelkes, 2003-06-30T09:23Z

För att slippa ovanstående felmedd.  måste ändra koden

```
DateSerial(Year(Request.Form("year")), Month(Request.Form("month"))+1, 0))
```

 
till
\[KOD\]iDayMonth = DatePart("d", DateSerial(Year(dteDate), Month(dteDate)+1, 0))

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

## #69 — Engine^, 2003-06-30T09:31Z

Ska det inte vara

```
DateSerial(Request.Form("year"), Request.Form("month") + 1, 0)
```

Eftersom jag antar att du har en \<select\> för år och en för månad.

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

## #70 — plelkes, 2003-06-30T09:40Z

verkar funka med båda sätten

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

## #71 — plelkes, 2003-06-30T12:45Z

Vet att troligtvis såbryter jag mot ngra principer vi har här på forumet, men äär på jobbet och får inte fram felutskrifterna..
Vill fortfarande trolla bort sista svarta raden.
Kommet på följande konstruktion som borde funka, men ngnstans blir det fel:

```
For i = 0 to 41
If i mod 7 = 0 Then Response.Write "<TR>"  'i mod 7 = 0 betyder att om i är jämt delad med 7
'Eftersom raderna går 0 ->6, 7 ->13, 14 ->20 osv så börjar_
'en ny tabellrad för varje gång i/7 = 0, dvs_
'0, 7, 14, 21, 28, 35

If aKalender(i) < 1 Then
Response.Write "<TD BGCOLOR=""#000000"">"
Response.Write " _" & "</TD>"
If i > intLastDayIndex And i mod 7 = 0 Then Response.Write "</TR>_
</TABLE></BODY></HTML>"
Else
Response.Write "<TD BGCOLOR=""#000000"">"
Response.Write " _" & "</TD>"
End If
Else
Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
Response.Write aKalender(i) & " " 
Response.Write "</FONT></CENTER></TD>"
End If
Next

If i mod 6 = 0 And i <> 0 Then 
Response.Write "</TR>"
End If

Response.Write "</TABLE></BODY></HTML>"
```

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

## #72 — Engine^, 2003-06-30T13:27Z

Nu drar jag till med ytterligare en suspekt lösning. Om det fungerar lär du märka det ;)

```
Response.Write "<tr>"

If iFirstDayIndex > 0 Then
  Response.Write "<td bgcolor=""#000000"" colspan=" & (intFirstDayIndex - 1) & ">&amp;nbsp;</td>"
End If

For i = [b]intFirstDayIndex[/b] to [b]intLastDayIndex[/b]
  If i mod 7 = 0 Then Response.Write "<TR>"  [blue]'i mod 7 = 0 betyder att om i är jämt delad med 7
  'Eftersom raderna går 0 ->6, 7 ->13, 14 ->20 osv så börjar_
  'en ny tabellrad för varje gång i/7 = 0, dvs_
  '0, 7, 14, 21, 28, 35[/blue]

  Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
  Response.Write aKalender(i) & " " 
  Response.Write "</FONT></CENTER></TD>"

  If i mod 6 = 0 And i <> 0 Then Response.Write "</TR>"
Next

intColSpan = 7 - (intLastDayIndex mod 7) 
If intColSpan > 0 Then
  Response.Write "<td bgcolor=""#000000"" colspan=" & intColSpan & ">&amp;nbsp;</td>"
End If

Response.Write "</tr></TABLE></BODY></HTML>"
```

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

## #73 — plelkes, 2003-06-30T16:18Z

Får inte Engines lösning att fungera, å andra sidan verkar jag inte få ngra att fungera alls från jobbet\*snyft\*

Min undran är ifall jag kan skriva som jag skrev i nedanstående kod

```
1:  If aKalender(i) < 1 Then
2: Response.Write "<TD BGCOLOR=""#000000"">"
3: Response.Write " _" & "</TD>"
4: If i > intLastDayIndex And i mod 7 = 0 Then
5:  Response.Write "</TR>_
6: </TABLE></BODY></HTML>"
7: Else
8: Response.Write "<TD BGCOLOR=""#000000"">"
9: Response.Write " _" & "</TD>"
10: End If
11: Else
12: Response.Write "<TD ALIGN=""CENTER"" 
13: VALIGN=""MIDDLE""><CENTER><FONT 
14: COLOR=""#330099"">"
15: Response.Write aKalender(i) & " " 
16: Response.Write "</FONT></CENTER></TD>"
17: End If
18: Next

If i mod 6 = 0 And i <> 0 Then 
Response.Write "</TR>"
End If

Response.Write "</TABLE></BODY></HTML>"
```

 Uppenbarligen är det ngt fel med koden, men vad??
Med rad 4, 5 och 6  har jag tänkt säga att om i\> intLastDayIndex
OCH i jämt delbart med 7, dvs vi har kommit till tabellrads slutet så avsluta raden och tabellen.
Om i \> intLastDayIndex, men INTE jämt delbart med 7 så skriv  ut en svart cell. Fortsätt skriva till radslutet

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

## #74 — plelkes, 2003-06-30T17:47Z

Kan tyvärr inte logga in till Brinkster för att prova,
men kan man skriva på följande sätt?

```
If i mod 7 = 0 Then Response.Write "<TR>" 
If aKalender(i)= "" Then
Response.Write "<TD BGCOLOR=""#000000"">"
Response.Write " _" & "</TD>"
[B]Do until i > intLastDayIndex And i mod 7 = 0
[/B] 
Else
Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
Response.Write aKalender(i) & " " 
Response.Write "</FONT></CENTER></TD>"
End If
Next

If i mod 6 = 0 And i <> 0 Then 
Response.Write "</TR>"
End If
```

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

## #75 — Engine^, 2003-06-30T18:55Z

Jag blir inte riktigt klok på dina bekymmer ;)

Så här gjorde jag min kalender

```
dteNow = Date()
intFirstDayIndex = WeekDay(DateSerial(Year(dteNow), Month(dteNow), 1), 2)
intLastDayIndex = DatePart(DateAdd("d", -1, DateAdd("m", 1, DateSerial(Year(dteNow), Month(dteNow), 1))))

strHTML = "<table><tr><td>Mån</td><td>Tis</td><td>Ons</td><td>Tor</td><td>Fre</td><td>Lör</td><td>Sön</td></tr>" & _
        = "<tr><td colspan=""7"" height=""1"" bgcolor=""black""></td></tr>" & _
        = "<tr><td colspan=""" & (intFirstDayIndex - 1) & """>&amp;nbsp;</td>"

For intIndex = intFirstDayIndex To intLastDayIndex
  If intIndex - intFirstDayIndex + 1 = Day(dteNow) Then
    strHTML = strHTML & "<td bgcolor=""white"">" & (intIndex -intFirstDayIndex + 1) & "</td>"
  Else
    strHTML = strHTML & "<td bgcolor=""gray"">" & (intIndex - intFirstDayIndex + 1) & "</td>"
  End If

  If intIndex mod 7 = 0 Then
    strHTML = strHTML & "</tr><tr>"

  intIndex = intIndex + 1
Next intIndex

If 7 - (intLastDayIndex mod 7) > 0 Then
  strHTML = strHTML & "<td colspan=""" & (7 - (intLastDayIndex mod 7)) & "&amp;nbsp;</td>"

strHTML = strHTML & "</tr></table>"

Response.Write strHTML
```

Den fungerar väl som det är tänkt, men innehåller inga finesser, eftersom jag har suttit och testat där för att kunna hjälpa dig ;) Kruxet kan vara att jag skriver den i C# och svarar dig med VBScript, men jag tror inte att det ska vara några allvarliga missar någonstans.

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

## #76 — plelkes, 2003-07-01T06:02Z

Herj,
mina bekymmer:

1. Varför kan jag inte skriva koden på det sätttet jag angav i mitt förra inlägg?
2. Är inte bekant med ditt sätt att skriva tex 

   ```
   strHTML = strHTML & "</tr><tr>"
   ```

    Hur skulle det se ut med Response.Write?

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

## #77 — Engine^, 2003-07-01T07:15Z

1\. Jag fick den uppfattningen att det inte fungerade?

2\. Response.Write "\</tr\>\<tr\>". strHTML är en sträng jag bygger upp med den HTML-kod som senare ska visas.

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

## #78 — plelkes, 2003-07-01T09:10Z

Det stämmer att min kod inte funkar, men undrar varför det inte gör.
Anser att det borde funka om man fritt översätter...

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

## #79 — plelkes, 2003-07-01T14:49Z

Ett litet förtydligande kanske:

Nedanstående fungerande if satser  

```
If aKalender(i) < 1 Then
2: Response.Write "<TD BGCOLOR=""#000000"">"
3: Response.Write " _" & "</TD>"
4: If i > intLastDayIndex And i mod 7 = 0 Then
5:  Response.Write "</TR>_
6: </TABLE></BODY></HTML>"
7: Else
8: Response.Write "<TD BGCOLOR=""#000000"">"
9: Response.Write " _" & "</TD>"
10: End If
```

 
som jag vill utföra så länge som

```
Do until i > intLastDayIndex And i mod 7 = 0
```

Har laborerat med koden, men inte lyckats få till det

```
1:  If aKalender(i) < 1 Then
2: Response.Write "<TD BGCOLOR=""#000000"">"
3: Response.Write " _" & "</TD>"
4: If i > intLastDayIndex And i mod 7 = 0 Then
5:  Response.Write "</TR>_
6: </TABLE></BODY></HTML>"
7: Else
8: Response.Write "<TD BGCOLOR=""#000000"">"
9: Response.Write " _" & "</TD>"
10: End If
11: Else
12: Response.Write "<TD ALIGN=""CENTER"" 
13: VALIGN=""MIDDLE""><CENTER><FONT 
14: COLOR=""#330099"">"
15: Response.Write aKalender(i) & " " 
16: Response.Write "</FONT></CENTER></TD>"
17: End If
18: Do until i > intLastDayIndex And i mod 7 = 0
19: Next
```

 
Snälla ASP-gurus hjälp mig få till det hela

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

## #80 — Engine^, 2003-07-01T15:21Z

```
Do Until i > intLastDayIndex And i mod 7 = 0
  If aKalender(i) < 1 Then
    Response.Write "<TD BGCOLOR=""#000000""> _</TD>"
  Else
    Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
    Response.Write aKalender(i) & " " 
    Response.Write "</FONT></CENTER></TD>"
  End If

  If i mod 7 = 0 Then Response.Write("</tr><tr>")

  i = i + 1
Loop

Response.Write "</TR></TABLE></BODY></HTML>"
```

Så skulle det kunna se ut...

Jag tycker den här stackars kodsnutten borde fixa sig själv snart ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/78853-kalendern-vill-inte-börja-med-första-dagen-i-månden/page4  
Föregående sida: https://www.webforum.nu/amne/asp/78853-kalendern-vill-inte-börja-med-första-dagen-i-månden/page3.md  
Nästa sida: https://www.webforum.nu/amne/asp/78853-kalendern-vill-inte-börja-med-första-dagen-i-månden/page5.md
