---
title: "villkor"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/83430-villkor"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-08-04T11:44:21.000Z"
updated: "2003-08-07T18:44:10.000Z"
replies: 30
views: 793
page: 1
pages: 2
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/83430-villkor"
---

# villkor

_Sida 1 av 2._

## #1 — plelkes, 2003-08-04T11:44Z

Nu när jag har lyckats få  ”ordning” på de svenska helgdagarna, tänkte jag vidareutveckla min almanacka. Det jag tänkte är att då en röd dag inträffar skall detta stå i min almanacka.

På min almanacka- sida har jag dels en textruta för året och en dropdown-lista för val av månad.
Om jag nu tex har nedanstående möjligheter:
Tex:
Om månad = 1  OCH dag = 1 skriv nyårsdagen
Om månad = 1 OCH dag = 6 skriv trettondag
Om månad = 6 OCH dag = 20 skriv midsommarafton
Om månad = 6 OCH dag = 21 skriv midsommardagen 
Och om inte nåt av fallen är uppfyllda skriv dag

1. Bör If - Else-then konstuktion användas här?
2. Om ja, kan jag få ett litet exempel på konstuktionen?
3. Eller bör i detta fal "Case" användas?
4. Och hur skulle ni konstruera detta?

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

## #2 — Gladh, 2003-08-04T13:03Z

I det fallet hade jag nog använt mig av Case:

```
switch(month){
 case 1:
  switch(day){
   case 1:
    break;
   case 2:
    break;
  break;
}
```

Ursäkta C# koden, men kommer inte ihåg hur man skriver i VBScript :(

Nu har du värre problem än så eftersom visa helgdagar inte går på datum, utan vilken veckodag det är, som exempel viss midsommar, det är inte ett speciellt datum, utan alltid en fredag, medans julafton alltid är den 24 oberoende av vilken veckodag det är.

Så det är alltså inte så enkelt att man bara kan ha en massa IF-satser och kolla emot. Så jag hade nog lagt alla helgdagar i en databas, vilken hade haft ett batchjob kopplat till sig den 1/1 varje år, som hade räknat fram vilka dagar som är helgdagar just detta år.
Sedan hade jag plockat fram dessa dagar i en array och på något smart sätt kollat om dag är en helgdag eller ej.

Antagligen hade jag gjort min array 2 dimensionell, så man hade kollat om en dag är helgdag så här.

```
if(_CheckDays[_iMont][_iDay] == true)
//-- dagen är en helgdag
else
//-- dagen är inte en helgdag
```

Så man fyller helt enkelt sin array med true/false beroende på om \[MÅNAD\]\[DAG\] är en helgdag eller ej.

\- M

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

## #3 — plelkes, 2003-08-04T13:12Z

Tack Magnus för ditt svar,,,
MEN

> Nu har du värre problem än så eftersom visa helgdagar inte går på datum, utan vilken veckodag det är, som exempel viss midsommar, det är inte ett speciellt datum, utan alltid en fredag, medans julafton alltid är den 24 oberoende av vilken veckodag det är.

 Men om jag tar fallet med julafton, varför kan jag inte hellt  "enkelt" kolla om 

1. om det rör sig om december?
2. om svaret på fråga 1 är ett ja, så kolla om dag = 24
3. om svar på fråga 2 är ett ja, så Response.Write "julafton"

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

## #4 — solbulle, 2003-08-04T13:18Z

Jag tror nog att du är medveten om problemet med att inte alla helger är på fasta datum, med tanke på dina tidigare trådar.
Av precis samma anledningen måste det ju vara väldigt svårt att lägga in det hela i en färdig db.
Dessa "enkla" helger som har fasta datum är ju lätta att ta rätt på, vare sig man använder If-satser, Case-satser eller databas.

Jag hade löst detta med If-satser eftersom att det förefaller enklast för mig. :)

```
skriv = "dag"

If manad = 1 then
	If dag = 1 then
		skriv = "nyårsdagen"
	Elseif dag = 6 then
		skriv = "trettondag"
	End if
End if

If manad = 6 then
	If dag = 20 then
		skriv = "midsommarafton"
	Elseif dag = 21 then
		skriv = "midsommardagen"
	End if
End if

response.write skriv
```

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

## #5 — plelkes, 2003-08-06T08:01Z

Nu har jag förskt med att "det" skall skriva ut alla helgonadagen oom det är rätt månad och rätt dag. Men med nedanstående kod blir det[bara kajko](http://www31.brinkster.com/plelkesprojekt/min_almanacka.asp) 

```
<%@LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>v&auml;gg kalender</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"></HEAD>

<BODY>

<FORM ACTION="" METHOD="post">
  <TABLE WIDTH="500" BORDER="1" ALIGN="CENTER" CELLPADDING="1" CELLSPACING="1" ID="val">
    <TR> 
      <TD WIDTH="119" HEIGHT="30"><CENTER>
          V&auml;lj &Aring;r (&Aring;&Aring;&Aring;&Aring;)</CENTER></TD>
      <TD WIDTH="50" HEIGHT="30"> <DIV ALIGN="LEFT"> 
          <INPUT NAME="Year" TYPE="text" SIZE="10" MAXLENGTH="4">
        </DIV></TD>
      <TD><CENTER>V&auml;lj M&aring;nad 
        </CENTER></TD>
      <TD><SELECT NAME="month" SIZE="1">
          <OPTION VALUE="1">Januari</OPTION>
          <OPTION VALUE="2">Februari</OPTION>
          <OPTION VALUE="3">Mars</OPTION>
          <OPTION VALUE="4">April</OPTION>
          <OPTION VALUE="5">Maj</OPTION>
          <OPTION VALUE="6">Juni</OPTION>
          <OPTION VALUE="7">Juli</OPTION>
          <OPTION VALUE="8">Augusti</OPTION>
          <OPTION VALUE="9">September</OPTION>
          <OPTION VALUE="10">Oktober</OPTION>
          <OPTION VALUE="11">November</OPTION>
          <OPTION VALUE="12">December</OPTION>
        </SELECT></TD>
    </TR>
    <TR> 
      <TD COLSPAN="4" HEIGHT="30"> <DIV ALIGN="RIGHT">
          <INPUT TYPE="submit" NAME="Submit" VALUE="Visa Almanacka">
        </DIV></TD>
    </TR>
  </TABLE>
</FORM>
<%
Session.LCID = 1053

ar = Request.Form("Year")
manad = Request.Form("month")
If len(ar)= 0 Then
    ar = Year(Now())
Else
ar = Request.Form("Year")
End IF
If len(manad)= 0 Then
    manad = Month(Now())
Else
manad = Request.Form("month")
End IF
'allhelgonadagen
function GeAllhelgon(ar)
dteDate = ar & "-10" & "-31"
dteDate = CDate(dteDate)
intWeekday = WeekDay(dteDate, vbSunday)
newdate = dateAdd("d", 7-intWeekDay, dteDate)
GeAllhelgon = newdate
end function

strDate = ar & "-" & manad & "-01"
dteDate = CDate(strDate)

intFirstDayIndex = WeekDay(dteDate, 2) - 1  
iDayMonth = DatePart("d", DateSerial(Year(dteDate), Month(dteDate)+1, 0)) 
intLastDayIndex = intFirstDayIndex  + iDayMonth - 1 
iDag = 1
For i = intFirstDayIndex to intLastDayIndex 

    aKalender(i) = iDag
	iDag = iDag + 1

Next
Response.Write "<TABLE ALIGN=CENTER BORDER=1 CELLSPACING=1 WIDTH=75% HEIGHT=75% >"
Response.Write "<TH COLSPAN=7> <FONT SIZE=+2>"
   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>"
For i = 0 to 41
If i mod 7 = 0 Then Response.Write "<TR>" 

If aKalender(i) < 1 Then
Response.Write "<TD BGCOLOR=""#000000"">"
Response.Write " _" & "</TD>"
End IF
If manad = Month(GeAllhelgon(ar)) then
If aKalender(i) = Day(GeAllhelgon(ar)) then
Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
Response.Write aKalender(i) & "all helgonadag " 
Response.Write "</FONT></CENTER></TD>"
Else
Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
Response.Write aKalender(i)
Response.Write "</FONT></CENTER></TD>"
End If
End If
Next

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

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

  Som vanligt är jag tacksam ifall ni ger även förklaring till mina fel

Utan ändringen [fungerar allt som tänkt](http://www31.brinkster.com/plelkesprojekt/test_list.asp) 
Även

även 

```
function GeAllhelgon(dteDate)
dteDate = ar & "-10" & "-31"
dteDate = CDate(dteDate)
intWeekday = WeekDay(dteDate, vbSunday)
newdate = dateAdd("d", 7-intWeekDay, dteDate)
GeAllhelgon = newdate
end function
manad = Month(GeAllhelgon(ar))
dagen = Day(GeAllhelgon(ar))

Response.Write manad
 Response.Write "<BR>"
 Response.Write dagen
'
```

 fungerar för sig självt

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

## #6 — plelkes, 2003-08-06T11:02Z

Ngn som hittar felet månne?

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

## #7 — solbulle, 2003-08-06T11:17Z

Jag får inte den där koden att fungera över huvud taget..

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

## #8 — solbulle, 2003-08-06T11:20Z

Fast så här borde din koll se ut tycker jag:

```
If manad = Month(GeAllhelgon(ar)) then
	If aKalender(i) = Day(GeAllhelgon(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
		Response.Write aKalender(i) & "all helgonadag " 
		Response.Write "</FONT></CENTER></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
```

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

## #9 — solbulle, 2003-08-06T11:32Z

```
For i = 0 to 41
If i mod 7 = 0 Then Response.Write "<TR>" 

If aKalender(i) < 1 Then
	Response.Write "<TD BGCOLOR=""#000000"">"
	Response.Write " _" & "</TD>"
Else

If manad = Month(GeAllhelgon(ar)) then
	If aKalender(i) = Day(GeAllhelgon(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
		Response.Write aKalender(i) & "all helgonadag " 
		Response.Write "</FONT></CENTER></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
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/1130518

## #10 — plelkes, 2003-08-06T12:44Z

Solbulle, som vanligt ett jättetack för din hjälp :birp 

Tänk att jag nästan gjorde rätt - men nära skjuter ju ingen..
Som vanligt ngra frågor:

1. dina indrag - är de "bara" för att koden skall vara lättare att läsa?
2. de andra helgdagarna - är det bara att lägga in de mellan End If och else?

   ```
   If manad = Month(GeAllhelgon(ar)) then
   	If aKalender(i) = Day(GeAllhelgon(ar)) then
   		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
   		Response.Write aKalender(i) & "all helgonadag " 
   		Response.Write "</FONT></CENTER></TD>"
   	End If
    [I][red]nästa helgdag[/red][/I] 
   Else
   		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
   		Response.Write aKalender(i)
   		Response.Write "</FONT></CENTER></TD>"
   
   End If
   ```
3. kan det bli i koden när jag har tex. dteDate på flera ställen? Redan nu har jag kod1:

   ```
   function GeAllhelgon(ar)
   dteDate = ar & "-10" & "-31"
   dteDate = CDate(dteDate)
   ```

     och kod 2

   ```
   strDate = ar & "-" & manad & "-01"
   dteDate = CDate(strDate)
   ```

    kod 1 och 2 är rätt snarlika.
   Skall jag "frisera" mina koder?

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

## #11 — plelkes, 2003-08-06T16:20Z

Koden jag fick av solbulle

```
For i = 0 to 41
If i mod 7 = 0 Then Response.Write "<TR>" 

If aKalender(i) < 1 Then
	Response.Write "<TD BGCOLOR=""#000000"">"
	Response.Write " _" & "</TD>"
Else

If manad = Month(GeAllhelgon(ar)) then
	If aKalender(i) = Day(GeAllhelgon(ar)) then
		Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
		Response.Write aKalender(i) & "all helgonadag " 
		Response.Write "</FONT></CENTER></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
End IF
Next

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

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

 
Fungerar tyvärr inte som jag tänkte. 
Årets alla helgonadag är månad 11 och dag 1.

Men om ni [provar detta](http://www31.brinkster.com/plelkesprojekt/min_almanacka3.asp) märker ni att koden inte skriver ut all helgonadagen som jag vill.  Ni testar genom att välja november från dropp-down

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

## #12 — plelkes, 2003-08-06T16:22Z

Ett tillägg:
att mina helgdagar funkar har jag testat på denna[sida](http://www31.brinkster.com/plelkesprojekt/helgdagar.asp) .
Jag har testat med 10 olika år

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

## #13 — solbulle, 2003-08-06T17:21Z

Nu då:

```
For i = 0 to 41
If i mod 7 = 0 Then Response.Write "<TR>" 

If aKalender(i) < 1 Then
	Response.Write "<TD BGCOLOR=""#000000"">"
	Response.Write " _" & "</TD>"
Else

If cint(manad) = Month(GeAllhelgon(ar)) AND aKalender(i) = Day(GeAllhelgon(ar)) then
	Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
	Response.Write aKalender(i) & "all helgonadag " 
	Response.Write "</FONT></CENTER></TD>"
Else
	Response.Write "<TD ALIGN=""CENTER"" VALIGN=""MIDDLE""><CENTER><FONT COLOR=""#330099"">"
	Response.Write aKalender(i)
	Response.Write "</FONT></CENTER></TD>"

End If
End IF
Next

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

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

## #14 — solbulle, 2003-08-06T18:00Z

Apropå dina övriga frågor.
Indenteringen - indragen - gör jag för att det blir BRA mycket lättare att läsa och följa koden.

Spontant annars tycker jag du bör smacka ihop alla test av helger till en större funktion som förslagsvis returnerar helgnamnet.
Du verkar ju onekligen, med avseende på din länk, veta hur du ska plocka ut alla helgdagar.

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

## #15 — plelkes, 2003-08-06T18:03Z

Tack solbulle, du har räddat mig så att jag har ngra hårstrå kvar - har börjat slite mit hår i ren förtvivlan....

- Hur skulle det se ut om  jag hade flera villkor - säg att jag hade 2 till
- cint(manad) = Month(nyar(ar)) AND aKalender(i) = Day(nyar(ar))
- cint(manad) = Month(trettondag(ar)) AND aKalender(i) = Day(trettondag(ar))

 

Jag tycker att det är MYCKET svårt och komplicerat att göra dessa nästlade villkorssatser

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

## #16 — plelkes, 2003-08-06T18:05Z

solbulle skrev:

> Spontant annars tycker jag du bör smacka ihop alla test av helger till en större funktion som förslagsvis returnerar helgnamnet.

 
kan du ge ett förslag hur denna funktion skulle se ut?

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

## #17 — solbulle, 2003-08-06T18:16Z

typ att du fogar ihop alla funktioner o tester i en sub eller funktion.

```
function helg(datum)

If datum = GeAllhelgon(datum) then
	helg = "Allhelgona"
Elseif datum = GeJulafton(datum) then
	helg = "Julafton"
Else
	helg = "vardag" ' eller helt tomt iofs.
End iF

End function
```

Red. Om du gör på det viset kan du ju bara rakt av i din orginalkod lägga in:

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

Man får väl komma på ett vettigt sätt att skicka in datumet dock

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

## #18 — nicclas, 2003-08-06T18:24Z

Hej hopp, får jag göra ett inlägg här ;)

Varför inte helt enkelt beräkna om det är en helgdag eller inte? Det är ganska komplicerat att räkna ut, men det finns en eller annan smart snubbe som tänkt ut hur man gör, så det är bara att implementera/programmera.

Jag har gjort en funktion för detta, den finns här: <http://www.nic-sys.se/php/>  Tyvärr är den skriven i PHP men du/ni kanske kan "översätta" :)

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

## #19 — solbulle, 2003-08-06T18:24Z

nicclas: Är det inte det som det hålls på med då?

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

## #20 — nicclas, 2003-08-06T18:31Z

Jasså gör ni? Jag som trodde att ni tänkt göra en databas (eller en massa IF-satser) med en massa datum? "Min" kod **beräknar** fram om det är en helgdag eller inte, och fungerar för all överskådlig framtid, och dåtid.

Men det var kanske det ni tänkt er också, bara att jag inte förstod. Sorry.

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/83430-villkor  
Nästa sida: https://www.webforum.nu/amne/asp/83430-villkor/page2.md
