---
title: "datum för veckodag som infaller under"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/81565-datum-för-veckodag-som-infaller-under/page3"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "plelkes"
published: "2003-07-08T13:22:17.000Z"
updated: "2003-07-13T18:25:20.000Z"
replies: 52
views: 880
page: 3
pages: 3
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/81565-datum-för-veckodag-som-infaller-under"
---

# datum för veckodag som infaller under

_Sida 3 av 3._

## #41 — plelkes, 2003-07-13T12:21Z

Denna kod

```
Session.LCID = 1053
function NewYearday(dteDate)
ar = 1975
dteDate = ar & "-01" & "-01"
NewYearday = CDate(dteDate)
End function
iWeekDay = DatePart("w", NewYearday(dteDate), 2)
Response.Write "Nyårsdagen =  " 
Response.Write WeekDayName(iWeekDay, ,vbMonday) & ":en   "
Response.Write NewYearday(dteDate)%>
```

 
fungerar nu!

Kan man och i såfall hur, konstruera en funktion som skriver ut nyåret som 

> onsdagen den 1:a januari?

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

## #42 — plelkes, 2003-07-13T13:22Z

Mina försök som jag  har fått hjälp med av ffa @nders, skall leda till en lista för helgdagar får vald år.
Följande kod har jag snickrat ihop hittills

```
<%@LANGUAGE="VBSCRIPT" %>
<HTML>
<HEAD>
<TITLE>helgdagar</TITLE>
</HEAD>
<BODY>
<TABLE WIDTH="39%" BORDER="0" ALIGN="CENTER" CELLPADDING="3" CELLSPACING="3">
<FORM ACTION="" METHOD="post">
<TR>
<TD WIDTH="27%"><DIV ALIGN="RIGHT"><INPUT TYPE="submit" NAME="Submit" VALUE="Helgdagar för År (ÅÅÅÅ)"></DIV></TD>
<TD WIDTH="73%"><INPUT NAME="year" TYPE="text" MAXLENGTH="4"></TD>
</TR>
</FORM>
</TABLE>
<%
Session.LCID = 1053
Response.Write "<TABLE WIDTH=""419"" BORDER=""2"" ALIGN=""CENTER"" CELLPADDING=""1"" CELLSPACING=""1"">"
Response.Write "<TR><TH WIDTH=""153"" SCOPE=""col""><U>Helgdag</U></TH><TH WIDTH=""251"" SCOPE=""col""><U>Datum</U></TH></TR>"
Response.Write "<TR><TD><CENTER><FONT COLOR=""#FF0000"" SIZE=""5""><B>Nyårsdagen</B></FONT></CENTER></TD>"
Response.Write "<TD>"

iWeekDay = DatePart("w", NewYearday(dteDate), 2)
Response.Write WeekDayName(iWeekDay, ,vbMonday) & "en   "
Response.Write NewYearday(dteDate) & "</TD>"

Response.Write "</TABLE>"
function NewYearday(dteDate)
ar = Request.Form("year")
dteDate = ar & "-01" & "-01"
NewYearday = CDate(dteDate)
End function
%>
<BODY>
</BODY>
</HTML>
```

 koden fungerar nästan som jag har tänkt mig, MEN då sidan laddas så får jag felutskrift 

> Microsoft VBScript runtime error '800a000d' 
> Type mismatch: 'CDate' 
> /plelkesprojekt/helgdagar.asp, line 36  (= NewYearday = CDate(dteDate) )
> Jag har försökt med att lägga till koden:

 

```
If len(ar)= 0 Then
ar = Year(Now())
Else
ar = Request.Form("year")
End IF
```

 Samma effekt oavsett var jag placera snutten

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

## #43 — @nders, 2003-07-13T13:31Z

I din funktion NewYearday() tar du emot en parameter som du inte använder. Du skickar in en odefinierad variabel i funktionen, helt i onödan. Jag skulle vilja att du gjorde så här:

```
....
ar = Request.Form("year")
if ar <> "" then 
      Response.Write NewYearday(ar) 
else
      Response.Write NewYearday(Year(Date))
end if
Response.write "</TD>"

Response.Write "</TABLE>"

function NewYearday(intYear)
  dteDate = intYear & "-01" & "-01"
  NewYearday = CDate(dteDate)
End function
.....
```

Mvh

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

## #44 — plelkes, 2003-07-13T13:46Z

men nu fattar jag mindre än noll igen\*snyft
\[\*list=1\]

> I din funktion NewYearday() tar du emot en parameter som du inte använder

 Jag tar väl emot parametern dteDate?
Och eftersom 

```
ar = Request.Form("year")
dteDate = ar & "-01" & "-01"
[CITAT]så använder jag väl den??
[*]i din kod[KOD]function NewYearday(intYear)
  dteDate = intYear & "-01" & "-01"
  NewYearday = CDate(dteDate)
End function
```

 använder du väl dig inte av ar = Request.Form("year")?

Om jag lyckas så kommer flera helgdagar att listas, och för alla vill jag att då sidan laddas så är ar = Year(Now). Kan jag då inte skriva i början av sidan:\[KOD\]
If len(ar)= 0 Then
ar = Year(Now())
Else
ar = Request.Form("year")
End IF  i din kod

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

## #45 — plelkes, 2003-07-13T13:49Z

men nu fattar jag mindre än noll igen\*snyft

> I din funktion NewYearday() tar du emot en parameter som du inte använder

 Jag tar väl emot parametern dteDate?
Och eftersom 

```
ar = Request.Form("year")
dteDate = ar & "-01" & "-01"
```

så använder jag väl den??
i din kod

```
function NewYearday(intYear)
  dteDate = intYear & "-01" & "-01"
  NewYearday = CDate(dteDate)
End function
```

 använder du väl dig inte av ar = Request.Form("year")?

Om jag lyckas så kommer flera helgdagar att listas, och för alla vill jag att då sidan laddas så är ar = Year(Now). Kan jag då inte skriva i början av sidan:

```
If len(ar)= 0 Then
ar = Year(Now())
Else
ar = Request.Form("year")
End IF
```

Eller måste kosnutten upprepas hela tiden?

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

## #46 — plelkes, 2003-07-13T13:51Z

Som ni   [ser här](http://www31.brinkster.com/plelkesprojekt/helgdagar.asp)  blir det konstigt när sidan laddas första gången, men sedan fungerar allt

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

## #47 — solbulle, 2003-07-13T14:04Z

Du ger ju aldrig denna något värde? Väl?

Response.Write NewYearday(dteDate) & "\</TD\>"

Var, utanför funktionen, får dteDate sitt värde?

Med @nders variant garnaterar du ju att få in ett datum (år) i funktionen.

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

## #48 — plelkes, 2003-07-13T14:20Z

> Var, utanför funktionen, får dteDate sitt värde?

 Aha - då det är därför det funkar efter att jag tryckt på knappen, för då tilldelar jag ett värde...

Eftersom jag är envis när saker inte funkar som jag tycker borde funka... Med mitt tilläg

```
If len(ar)= "" Then
ar = Year(Now())
Else
ar = Request.Form("year")
End IF
```

 
säger jag väl:
att om formulären är tom skall 

> dagens år = ar

i annat fall skall väljaqs det som fylls i formuläret...

1. varför funkar inte detta???
2. kan jag skriva detta överst i filen för att det skall vara allmängiltigt?

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

## #49 — plelkes, 2003-07-13T14:35Z

Jag menar, det funkar ju i nedanstående

```
Session.LCID = 1053
function GeAllhelgon(dteDate)
ar = Year(Now())
dteDate = ar & "-10" & "-31"
dteDate = CDate(dteDate)
intWeekday = WeekDay(dteDate, vbSunday)
newdate = dateAdd("d", 7-intWeekDay, dteDate)
GeAllhelgon = newdate
end function

Response.Write GeAllhelgon(dteDate) & "<BR>"
iWeekDay = DatePart("w",GeAllhelgon(dteDate))
Response.Write iWeekDay & "<BR>"
Response.Write WeekDayName(iWeekDay)
```

 

Eller måste jag hoppa över konstruktion med funktion för att få allt att funka???

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

## #50 — @nders, 2003-07-13T17:21Z

> Jag tar väl emot parametern dteDate?

Nja. Du har den parametern i interfacet till funktionen, och du anger den när du kallar på funktionen. Däremot har inte dteDate något värde, och även om den hade haft det skulle du inte använt det till något, eftersom du bara återanvänder variabelnamnet dteDate i funktionen.

> i din kod...använder du väl dig inte av ar = Request.Form("year")?

Jo, om något värde skickas används det, annars aktuellt år. Det kontrollerar jag vid funktionsanropet.

> Kan jag då inte skriva i början av sidan:
>
> ```
> If len(ar)= 0 Then
> ar = Year(Now())
> Else
> ar = Request.Form("year")
> End IF
> ```

Jo. Men då måste du se till att du efter det *alltid* hänvisar till variabeln ar istället för att använda request för att hämta in värdet. Då slipper du upprepa if-satsandet.

Koden i mitt tidigare inlägg borde med hjälp av cut & paste fungera. Har du testat?

Slutligen: nej, du *måste* inte använda funktioner. Men det är bra att göra för att få koden återanvändningsbar och lätt att överblicka.

Mvh

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

## #51 — plelkes, 2003-07-13T18:05Z

Först av allt måste jag säga: ett stort tack för att ni och framför allt @nders har tålamod med mig :birp 

För det andra så tycker jag att det där med funktion är svår begripligt\*suck\*

@nders i din kod:

```
function NewYearday(intYear)
  dteDate = intYear & "-01" & "-01"
  NewYearday = CDate(dteDate)
End function
```

 
så är argumentet

```
intYear
```

 
Och du kallar på funktionen med tex

```
Response.Write NewYearday(Year(Date))
```

 Och med

```
ar = Request.Form("year")
if ar <> "" then 
      Response.Write NewYearday(ar) 
else
      Response.Write NewYearday(Year(Date))
end if
Response.write "</TD>"

Response.Write "</TABLE>"

function NewYearday(intYear)
  dteDate = intYear & "-01" & "-01"
  NewYearday = CDate(dteDate)
End function
```

 ovanstående kod, så tilldelar du argumentet antingen det värde som anges i formuläret eller dagens år.

Stämmer ovanstående slutledningar?

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

## #52 — plelkes, 2003-07-13T18:07Z

och kan du försöka förklar nedanstående lite mer utförligt?

> Jo. Men då måste du se till att du efter det alltid hänvisar till variabeln ar istället för att använda request för att hämta in värdet. Då slipper du upprepa if-satsandet.

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

## #53 — @nders, 2003-07-13T18:25Z

> Stämmer ovanstående slutledningar?

Slutledningarna stämmer. :)

> och kan du försöka förklar nedanstående lite mer utförligt?

Okej, jag ska försöka:

Det är en bra idé att överst på sidan kontrollera om någonting skickas från formuläret, och då sätta variabeln *ar*s värde till antingen år från formuläret eller aktuellt år. När du gör det, kom bara ihåg, att varje gång efter det du ska använda året någonstans, skriv aldrig *request.form("year")*, utan använd variabeln *ar*. Annars har du ju gjort if-satsen i onödan, och det kommer i alla fall inte fungera, så länge du inte får något år från formuläret.

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/81565-datum-för-veckodag-som-infaller-under/page3  
Föregående sida: https://www.webforum.nu/amne/asp/81565-datum-för-veckodag-som-infaller-under/page2.md
