Avatar billede jimpp Nybegynder
24. august 2006 - 14:58 Der er 18 kommentarer og
1 løsning

Online Kalender, Et lille problem.

Har følgende kode:

<%
  'Array's til browsing / paging i kalender
  VarMonths = "Blank,January,Febuary,March,April,May,June,July,August,September,October,November,December"
  VarDays  = "0,31,28,31,30,31,30,31,31,30,31,30,31"
  VarWDays  = "Blank,Sun,Mon,Tue,Wed,Thu,Fri,Sat"
  ArrMonths = Split(VarMonths,",")
  ArrDays  = Split(VarDays,",")
  ArrWDays  = Split(VarWDays,",")
 
  If Request.QueryString("month") = false Then
    CurrentMonth = Month(date)
  Else
    CurrentMonth = Request.QueryString("month")
  End If

  If Request.QueryString("year") = false Then
    CurrentYear = Year(date)
  Else
    CurrentYear = Request.QueryString("year")
  End If
 
  If Request.QueryString("month") = "0" Then
    CurrentYear = CurrentYear-1
    CurrentMonth = "12"
  End If

  If Request.QueryString("month") = "13" Then
    CurrentYear = CurrentYear+1
    CurrentMonth = "1"
  End If
 
  CurrentDay = Day(date)
 
  'Til Gennemløb af dage
  Days2Month    = int(ArrDays(CurrentMonth))
  FirstDay      = Weekday(DateValue(CurrentYear&"-"&CurrentMonth&"-1"))
 
  If IsDate(CurrentYear&"-2-29") = True And CurrentMonth = 2 Then
    Days2Month = Days2Month + 1
  End If 
 
  If FirstDay = 1 Then
    MoveDateSquare = 6
  Elseif FirstDay = 2 Then
    MoveDateSquare = 0
  Elseif FirstDay = 3 Then
    MoveDateSquare = 1
  Elseif FirstDay = 4 Then
    MoveDateSquare = 2
  Elseif FirstDay = 5 Then
    MoveDateSquare = 3
  Elseif FirstDay = 6 Then
    MoveDateSquare = 4
  Elseif FirstDay = 7 Then
    MoveDateSquare = 5
  End If
%>
<h3>Spamfighter Calendar 1.0</h3>
<!-- Måned og paging deraf :) -->
<table width="100%" cellpadding="2" cellspacing="5" border="0">
  <tr>
    <td bgcolor="EAE9DC" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;" onclick="window.location='?month=<%=CurrentMonth-1%>&year=<%=CurrentYear%>'" >
      <center>
        <<
      </center>
    </td>
    <td bgcolor="#5F5F4B" style="color:#FFFFFF; font-weight:bold; border:1px solid black;">
      <center>
        <%=ArrMonths(CurrentMonth)%>&nbsp;-&nbsp;<%=CurrentYear%>&nbsp;<%=FirstDay%>&nbsp;<%=MoveDateSquare%>
      </center>
    </td>
    <td bgcolor="EAE9DC" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;" onclick="window.location='?month=<%=CurrentMonth+1%>&year=<%=CurrentYear%>'">
      <center>
        >>
      </center>
    </td>
  </tr>
</table>
<!-- Dage i aktuel måned -->
<table width="100%" cellpadding="2" cellspacing="5" border="0">
  <tr>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Mon.
      </center>
    </td>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Tue.
      </center>
    </td>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Wed.
      </center>
    </td>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Thu.
      </center>
    </td>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Fri.
      </center>
    </td>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Sat.
      </center>
    </td>
    <td bgcolor="#CFCBB2" width="10%" style="cursor:Pointer; font-weight:bold; border:1px solid black;">
      <center>
      Sun.
      </center>
    </td>
  </tr>
<%
i = 1
x = 0
TRcount = 1

Do while not i-1 = Days2Month+MoveDateSquare
 
 
  'Den reelle dato for kolonne
  RealDate = DateValue(CurrentYear&"-"&CurrentMonth&"-"&i)
  'Uge dagen
  CurrentWDay = int(Weekday(CurrentYear&"-"&CurrentMonth&"-"&i))

  If TRcount = 1 Then
    Response.Write("<tr>")
  End if
 
  If CurrentDay = i And Int(CurrentMonth) = Int(Month(date)) Then
    BGcolor = "#CFCBB2"
  Else
    BGcolor = "#EAE9DC"
  End If
 
  If MoveDateSquare > x Then
%>
  <td bgcolor="<%=BGcolor%>">
    &nbsp;
  </td>
<%
  Else
%>
  <td bgcolor="<%=BGcolor%>"  style="cursor:Pointer; font-weight:bold; border:1px solid black;" onclick="window.location='?'" >
      <center>
        <%=i%>
        <br>
        <%=ArrWDays(CurrentWDay)%>
        <br>
        <%=RealDate%>
        <br>
        <%=CurrentWDay%>
      </center>
  </td>
<%
  End If

  If TRcount = 7 Then
    Response.Write("</tr>")
    TRcount = 0
  End if

TRcount = TRcount+1
i = i+1
x = x+1
Loop
%>
</table>

Der giver denne fejl:

Microsoft VBScript runtime  error '800a000d'

Type mismatch: 'DateValue'

/planner.asp, line 131

Nu har jeg kæmpet med et i to dage, så hvis der er en ekspert herinde der kan gennemskue hvad der går galt og hvordan det omgås, ville jeg være dybt taknemmelig :)

(Koden skal nok lige rykkes ind i en ASP-fil før det giver nogen mening)
Avatar billede fennec Nybegynder
24. august 2006 - 15:09 #1
Kunne virke som om du ikke får rigtig data sat i din DateValue funktion:

Do while not i-1 = Days2Month+MoveDateSquare
 
 
  'Den reelle dato for kolonne
  RealDate = DateValue(CurrentYear&"-"&CurrentMonth&"-"&i) '<-- LIGE HER
  'Uge dagen

Prøv at lave en response.write lige før, så du kan se hvordan variablerne ser ud:
  response.write CurrentYear&"-"&CurrentMonth&"-"&i
  RealDate = DateValue(CurrentYear&"-"&CurrentMonth&"-"&i) '<-- LIGE HER
Avatar billede fennec Nybegynder
24. august 2006 - 15:11 #2
Brug evt dateserial() i stedet, når du har år, måned og dag hver for sig:
RealDate = dateserial(CurrentYear,CurrentMonth,i)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/47ae21c7-193d-4216-a571-7deac1027662.asp
Avatar billede jimpp Nybegynder
24. august 2006 - 15:19 #3
DateSerial giver samme fejl.

Med Datevalue giver en response.write = 11/1/2006 11/2/2006  11/3/2006  11/4/2006  11/5/2006  11/6/2006  11/7/2006  11/8/2006 11/9/2006  11/10/2006  11/11/2006  11/12/2006  11/13/2006  11/14/2006  11/15/2006 11/16/2006  11/17/2006  11/18/2006  11/19/2006  11/20/2006  11/21/2006  11/22/2006 11/23/2006  11/24/2006  11/25/2006  11/26/2006  11/27/2006  11/28/2006  11/29/2006 11/30/2006
Avatar billede jimpp Nybegynder
24. august 2006 - 15:20 #4
DateSerial stopper udover det udskriftet, hvor imod DateValue giver det output jeg skal bruge, men komemr med den førnævnte fejl.
Avatar billede fennec Nybegynder
24. august 2006 - 15:27 #5
Lad være med at udskrive resultat. Vi skal have den variabel du samler, og sender gennem funktionen. Det er nok den der er forkert:

response.write CurrentYear&"-"&CurrentMonth&"-"&i

Skulle gerne give 2006-11-01 2006-11-02 osv indtil den sidste som burde være forkert i en eller anden forstand.
Avatar billede jimpp Nybegynder
24. august 2006 - 15:36 #6
Okay :P

Det giver følg. output

2006-8-12006-8-2 2006-8-3 2006-8-4 2006-8-5 2006-8-6 2006-8-7 2006-8-82006-8-9 2006-8-10 2006-8-11 2006-8-12 2006-8-13 2006-8-14 2006-8-152006-8-16 2006-8-17 2006-8-18 2006-8-19 2006-8-20 2006-8-21 2006-8-222006-8-23 2006-8-24 2006-8-25 2006-8-26 2006-8-27 2006-8-28 2006-8-292006-8-30 2006-8-31
Avatar billede jimpp Nybegynder
24. august 2006 - 15:40 #7
Du får den lige med mellemrum, for overskueligthed:

2006-8-1 2006-8-2 2006-8-3 2006-8-4 2006-8-5 2006-8-6 2006-8-7 2006-8-8 2006-8-9 2006-8-10 2006-8-11 2006-8-12 2006-8-13 2006-8-14 2006-8-15 2006-8-16 2006-8-17 2006-8-18 2006-8-19 2006-8-20 2006-8-21 2006-8-22 2006-8-23 2006-8-24 2006-8-25 2006-8-26 2006-8-27 2006-8-28 2006-8-29 2006-8-30 2006-8-31
Avatar billede fennec Nybegynder
24. august 2006 - 15:45 #8
Er det samme kørsel som før??
For der var datoerne i november (11/1/2006) mens de nu er i august (2006-8-1).

Med de tal burte dateserial() fungere. Den fejler kun hvis den IKKE får tal ind. F.eks vil dateserial(2006,8,32) give en dato, som er 1. sep 2006.

Bare for at være helt sikker på, at vi også har den samme linje, hvilken linje er så 131 (som den fejler i)
Avatar billede jimpp Nybegynder
24. august 2006 - 15:50 #9
RealDate = DateValue(CurrentYear&"-"&CurrentMonth&"-"&i)

DateSerial siger:

Microsoft VBScript runtime  error '800a01c2'

Wrong number of arguments or invalid property assignment: 'DateSerial'

/planner.asp, line 131

Det var bare fra hver sin måned problemet er der ved alle måneder, med mindre den første dag er en Mandag
Avatar billede fennec Nybegynder
24. august 2006 - 15:59 #10
Måske vi skulle starte fra bunden af igen :o)

Hvad er det du vil med scriptet?? Har du et sted vi kan se det i aktion??
Avatar billede jimpp Nybegynder
24. august 2006 - 16:02 #11
Det ligger på et intranet desværre :) så det ville resultere i en øjeblikkelig opsigelse :P

Men det burder virke hvis du rykker det ind i en tom asp fil og du vil kunne se hvad jeg vil med det.

Basalt set er det et kopi af Windows kalender
Avatar billede fennec Nybegynder
24. august 2006 - 16:11 #12
Dateserial virker fint for mig. Har ændret disse 2 linjer:

  'Den reelle dato for kolonne
  RealDate = dateserial(CurrentYear,CurrentMonth,i)
  'Uge dagen
  CurrentWDay = int(Weekday(RealDate))
Avatar billede fennec Nybegynder
24. august 2006 - 16:12 #13
Sludder. Den fejler ikke længere, men har placeret datoerne forkert.
Avatar billede jimpp Nybegynder
24. august 2006 - 16:17 #14
Ja den har jeg også været igennem :) - det ahr også lykkes mig at få 37 dage i August 2006
Avatar billede fennec Nybegynder
24. august 2006 - 16:46 #15
Jeg har for lang tid siden lavet sådan her et script, men jeg kan ikke finde det igen :o(

Kan du ikke smide en besked herinde i morgen, hvis du ikke selv har fundet ud af noget. Så skal jeg nok kikke på det igen, da jeg ikke har mere tid i dag. (Jeg glemmer ?'et, hvis jeg ikke får en påmindelse om det. Min hukommelse er som en si :o)
Avatar billede jimpp Nybegynder
24. august 2006 - 16:56 #16
Gør jeg når jeg møder ind, hvis ikek jeg bare skriver det om i nat :) - Men tak for hjælpen indtil videre og go' fyraften!
Avatar billede jimpp Nybegynder
28. august 2006 - 11:36 #17
Har omskrevet og det fungere :) nogenlunde

Men du skal da have points for din tid - så lig et svar
Avatar billede fennec Nybegynder
28. august 2006 - 11:57 #18
.o) <-- One Eyed Jack
Avatar billede jimpp Nybegynder
28. august 2006 - 13:15 #19
Og skulle nogen kigge på overstående kode i håb om at finde noget brugbart, så glem det brug ASP Dato funktioner istedet :P
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