PplelkesMedlem sedan mars 2002823 inlägg 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?
PplelkesMedlem sedan mars 2002823 inlägg 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
@ndersMedlem sedan juni 200032 967 inläggI 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
PplelkesMedlem sedan mars 2002823 inlägg 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
PplelkesMedlem sedan mars 2002823 inlägg 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?
PplelkesMedlem sedan mars 2002823 inlägg Som ni ser här blir det konstigt när sidan laddas första gången, men sedan fungerar allt
SsolbulleMedlem sedan mars 20015 287 inlägg 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.
PplelkesMedlem sedan mars 2002823 inlägg
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...
- varför funkar inte detta???
- kan jag skriva detta överst i filen för att det skall vara allmängiltigt?
PplelkesMedlem sedan mars 2002823 inlägg 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???
@ndersMedlem sedan juni 200032 967 inlägg
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
PplelkesMedlem sedan mars 2002823 inlägg 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?
PplelkesMedlem sedan mars 2002823 inlägg 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.
@ndersMedlem sedan juni 200032 967 inlägg
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 ars 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