webForumDet fria alternativet

Problem med funktion

3 svar · 207 visningar · startad av andreas_lindh

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#1

Jag har en kalender där jag har de här funktionerna för att skapa länkar till nästa och föregående månad

Function prevmonth(Byval x, Byref y)
	If x = 1 Then
         y = y - 1
         x = 12
         link = "default.asp?m=" & x & "&y=" & y
    Else
         y = y
         x = x - 1
        link = "default.asp?m=" & x & "&y=" & y
    End If
	prevmonth = link
end function
Function nextmonth(Byval a, Byref b)
	If a = 12 Then
         b = b + 1
         a = 1
         link = "default.asp?m=" & a & "&y=" & b
    Else
         b = b
         a = a + 1
        link = "default.asp?m=" & a & "&y=" & b
    End If
	nextmonth = link
end function

Jag använder den så här

<% = nextmonth(m,y) %>

m och y får jag fram så här

if request.querystring("m") = "" then
y = datepart("yyyy",date())
m = datepart("m",date())
else
y = request.querystring("y")
m = request.querystring("m")
end if

Funktionen för föregående månad fungerar. Funktionen för nästa månad fungerar också bra förutom i januari.
Länken i december år 2003 ser ut så här

[url]http://localhost/jkalender/default.asp?m=1&y=2004[/url]

Men sen när jag är i januari 2004 ser länken ut så här

[url]http://localhost/jkalender/default.asp?m=2&y=2003[/url]

Någon som ser vad som är fel?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Använd DateAdd() istället för att lägga till manuellt. Med de datumfunktioner som finns inbyggda i VBScript vet du att du alltid hanterar giltiga datum.

Mvh

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#3

Men jag har aldrig några hela datum utan bara nummret på månaden och året
sen hämtar jag händelser ut kalendern så här

sql="select distinct datum from kalender where month(datum) = " & m &" and year(datum) =" & y &" and vem='p' order by datum"
set rsp = oconn.execute(sql)

och funktionen prevmont fungerar som den ska
länken till föregående månad i januari blir

[url]http://localhost/jkalender/default.asp?m=12&y=2002[/url]

och
länken i december blir då rätt

[url]http://localhost/jkalender/default.asp?m=11&y=2002[/url]

Så jag förstår inte varför inte nextmonth fungerar

GladhMedlem sedan maj 20012 812 inlägg
#4

Du kan fortfarande använda dig av DateAdd() även om du bara har år och månad.

dDate = myYear & "-" & myMonth & "-01"

nextMonth = DateAdd("m",1,dDate)
prevMonth = DateAdd("m",-1,dDate)

- magnus

137 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)