Avatar billede thb Nybegynder
08. oktober 2003 - 17:27 Der er 9 kommentarer og
1 løsning

Hjælp til en kalender

Hey

Jeg er ved at lave en kalender, men jeg har nogle problemer med at få den til at skrive uge tallene rigtigt..

Kalenderen kan ses i en simpel version her: www.lyngbyvolley.dk/test.asp

Hvis i kigger på dagsdato som er markeret med fed, så er den i uge 40, hvilket er forkert, vi er i uge 41, okay, så sagde jeg uge+1 men så hvis man går frem til 1 december ved pilene i toppen, så passer den uge ikke den skriver uge 50 hvis man siger uge+1...

Derud over vil jeg gerne hvad at man f.eks. lørdag & søndag i en uge, er inde i en ny måned så skal uge tallet stå i toppen af den måned også..

Håber at I kan hjælpe, og forstå mit spm, ellers så spørg..

Her noget kode..

Thomas


<%
md = request("md")
ye = request("ye")
dato = request("dato")

if md = "" then md = month(date())
if ye = "" then ye = year(date())

kalenderTop

response.write "<table width='100%'>"

p = weekday(dateserial(ye,md,i),2)
       
        for i = 1 to day(dateSerial(ye,md+1,1-1))
           
            if p = 7 then
                response.write "<tr><td>" & "Uge " & DatePart("ww",DateAdd("ww",(i/p),DateSerial(ye,md,1)),2) & "</td></tr>"
                p = 0   
            end if
               
            if date() = dateserial(ye,md,i) then
                b = "<b>"
                b_slut = "</b>"
                bg = "DDDDDD"
                tom_besked = "Der sker ikke noget idag"
            else
                b = ""
                b_slut = ""
                bg = ""
                tom_besked = "<img src=img/empty.gif width=0 height=0>"
            end if
               
            aktivi = false
            hr = "<hr border=1 color='" & lys_gra & "'>"
               
            response.write "<tr><td>"
           
                response.write "<a href='?mode=day&ye=" & ye & "md=" & md & "&dag=" & p & "'>"
                    response.write b & weekdayname(weekday(dateserial(ye,md,i),1)) & "<br>"
                    response.write i & "." & md & "." & ye & b_slut
                response.write "</a>"

            response.write "</td><td>"
                response.write "Aktivitet"
            response.write "</td></tr>"
            p = p+1   
        next
    response.write "</table>"
   
   
Sub KalenderTop
    response.write "<table width='100%'>"
        response.write "<tr>"
            response.write "<td>"
                response.write "<a href='?md=" & DatePart("m",DateAdd("m",-1,DateSerial(ye,md,1))) & "&ye=" & DatePart("yyyy",DateAdd("m",-1,DateSerial(ye,md,1))) & "'><--</a>"
            response.write "</td>"
            response.write "<td align=center>"
                response.write "<b>" & MonthName(md) & "&nbsp;" & sy & "</b>"
            response.write "</td>"
            response.write "<td>"
                response.write "<a href='?md=" & DatePart("m",DateAdd("m",1,DateSerial(ye,md,1))) & "&ye=" & DatePart("yyyy",DateAdd("m",1,DateSerial(ye,md,1))) & "'>--></a>"
            response.write "</td>"
        response.write "</tr>"
    response.write "</table>"
end sub   
%>
Avatar billede athlon-pascal Juniormester
08. oktober 2003 - 17:35 #1
Jeg kan ikke ASP, men måske kan dette bruges:
http://www.mayland.dk/lexi.php?searchstring=ugenummerering :-)
Avatar billede thb Nybegynder
08. oktober 2003 - 17:42 #2
Det hjælper desværre ikke rigtig noget.. :)

Thomas
Avatar billede dawin_dk Nybegynder
08. oktober 2003 - 18:17 #3
ugenummer udregnes ved at sætte den her funktion ind:

function ugenr(dato)
  ugenr=DatePart("ww", dato, vbMonday, vbFirstFourDays)
  if weekday(dato)=2 and ugenr=53 and DatePart("ww", dato()+4, vbMonday, vbFirstFourDays)=1 then ugenr=1
end function

og den kaldes så med f.eks.

response.write ugenr(now())

.. grunden til den ekstra linie er for at rette en indbygget fejl MS har i den funktion ... der er nogen mandage der bliver listet som forkert uge i nogle få tilfælde... det retter den her op på ..
Avatar billede thb Nybegynder
08. oktober 2003 - 18:46 #4
okay... kigger på det senere... Skal smutte nu...
Avatar billede thb Nybegynder
08. oktober 2003 - 22:42 #5
Okay det ser helt fint ud, men den skriver uge 53, og bagefter uge 2..
Avatar billede dawin_dk Nybegynder
08. oktober 2003 - 22:49 #6
lav den sårn her for at sikre der ik opstår fejl..

function ugenr(dato)
  dato=cdate(dato)
  uge=DatePart("ww", dato, vbMonday, vbFirstFourDays)
  if weekday(dato)=2 and uge=53 and DatePart("ww", dato()+4, vbMonday, vbFirstFourDays)=1 then uge=1
  ugenr=uge
end function
Avatar billede thb Nybegynder
08. oktober 2003 - 22:50 #7
Okay nu virker det.. :O)

Der var bare lige nogle skøns fejl i din funktion..

Lige en ting til, hvordan får jeg et uge nummer til at stå i toppen, hvis nogle dage fra en uge, på i den næste måned, så skulle der gerne stå uge nummeret i toppen på næste side... Hvis du forstår..

Thomas
Avatar billede dawin_dk Nybegynder
08. oktober 2003 - 22:54 #8
lige efter:
for i = 1 to day(dateSerial(ye,md+1,1-1))

laver du en:
if i=1 and p<>7 then response.write "<tr><td>" & "Uge " & ugenr(DateSerial(ye,md,1)) & "</td></tr>"
Avatar billede thb Nybegynder
08. oktober 2003 - 22:58 #9
Du er bare bonus.. :)
Jeg har kæmpet med den lorte kalender i et par dage.. Hver gang jeg fandt et løsning for det ene problem så kom der et andet.. :(

Men nu ser det ud til at det er lykkedes.. :)

Tusind tak.. Her er point..

Thomas
Avatar billede dawin_dk Nybegynder
08. oktober 2003 - 22:59 #10
np :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester