webForumDet fria alternativet

försök till almanacka

ASP

7 svar · 462 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

...håller jag på med. Har kommit så här långt:

<%@LANGUAGE=VBSCRIPT %>
<% Option Explicit %>
<HTML>
<BODY>
<%
Session.LCID = 1053
Dim dagensdat  'för att få reda på det aktuella datumet
Dim fdm  'aktuella månadens första dag
Dim adim 'hur många dagar innehåller den aktuella månaden?

dagensdat = Date()
fdm = DatePart("w", DateSerial(Year(dagensdat), Month(dagensdat), 1))
adim = DatePart("d", DateSerial(Year(dagensdat), Month(dagensdat)+1, 1-1)) 'da´n innan första dagen i nästa månad. dvs sista dagen i nuvarande månad.
'kalendern skall visas i form av en tabell. Kalendern har som mest 6 veckor, och varje vecka innehåller 7 dagar.
'kalendertabellen innehåller alltså 42 (= 6*7) celler.

Dim almanacka(42) 'här skapar vi en array för 42 möjliga dagar
'För att fylla almanacka() vill vi stega från månadens första dag till antalet dagar i månaden
For fdm to adim
Next

Dim kolumn, rader
kolumn = 7 'eftersom jag vill visa kalendern i form av en tabell skapar jag 7 kolumner (1 för varje dag i veckan)
rader = 6 -Int((42-(fdm + adim)/7))
'antalet rader fås fram på följande sätt: 6 är antalet möjliga rader, 42 är ju övre gränsen av almanacka()
'första dagen + totala antalet dager dividerad med dager på en vecka som är ju 7.

'skapa tabellen
Response.Write "<TABLE WIDTH=""75%"" HEIGHT=""75%"" BORDER=1 ALIGN=CENTER CELLPADDING=1 CELLSPACING=1>"
Response.Write "<TH COLSPAN=7><FONT SIZE=+2>"
Response.Write MonthName(Month(dagensdat)) & ",  " & Year(dagensdat)
Response.Write "</FONT></TH>"

När jag försöker testa får jag:

det fröväntas ett " = " i raden

For fdm to adim
Next

Jag kommer ingen vart, och skulle behöva er hjälp.
Mitt syfter är att göra en loop där man stegar från månadens första dag till totala antalet dagar i månaden

Medlem sedan juni 200032 967 inlägg
#2

Syntax:

For kontrollvariabel = frånvärde to tillvärde.

Dvs:

For i = fdm to adim

Skriv också ut variablernas värden så du ser att de innehåller rätt saker.

mvh

Medlem sedan mars 2002823 inlägg
#3

@nders:

For i = fdm to adim

Behöver inte jag ändra almanacka(42) till almanacka(i) ?

Skriv också ut variablernas värden så du ser att de innehåller rätt saker.

Menar du

Response.Wrie almanacka(i)
Medlem sedan mars 2002823 inlägg
#4

Nu har jag ändrat lite:

<%@LANGUAGE=VBSCRIPT %>
<% Option Explicit %>
<HTML>
<BODY>
<%
Session.LCID = 1053
Dim dagensdat  'för att få reda på det aktuella datumet
Dim fdm  'aktuella månadens första dag
Dim adim 'hur många dagar innehåller den aktuella månaden?

dagensdat = Date()
fdm = DatePart("w", DateSerial(Year(dagensdat), Month(dagensdat), 1))
adim = DatePart("d", DateSerial(Year(dagensdat), Month(dagensdat)+1, 1-1)) 'da´n innan första dagen i nästa månad. dvs sista dagen i nuvarande månad.
'kalendern skall visas i form av en tabell. Kalendern har som mest 6 veckor, och varje vecka innehåller 7 dagar.
'kalendertabellen innehåller alltså 42 (= 6*7) celler.
Dim i
Dim almanacka(42) 'här skapar vi en array för 42 möjliga dagar
'För att fylla almanacka() vill vi stega från månadens första dag till antalet dagar i månaden
For i = fdm to adim
Response.Write WeekdayName(i) & "<P>"
Next
%>
</BODY>
</HTML>

Porblemet är att när jag "kör" så får jag de 3 första dagarna rätt, men sedan får jag följande flemeddelande

Körningsfel i Microsoft VBScript 800a005
Ogiltigt proceduranrop eller argument.: 'WeekdayName'

  • varför får jag detta efter 3 "loopar"?
  • är koden rätt hittills ändå?
  • vad bör jag ändra på?
Medlem sedan mars 20015 287 inlägg
#5

Har jag fel om jag tror att WeekdayName vill ha ett tal mellan 1 och 7 som argument?

Medlem sedan mars 2002823 inlägg
#6

det stämmer solbulle!

Men hur kommer jag runt detta och ändå kunna testa koden?

Medlem sedan mars 20015 287 inlägg
#7

Hur menar du egentligen mad att testa koden? Vad vill du uppnå med det där?
Lista alla veckodagar i din almanacka?
Typ: Torsdag, Fredag osv, ~26 dagar eller vad det nu kan bli?

Medlem sedan mars 2002823 inlägg
#8

Go´morrn alla :h

Hur menar du egentligen mad att testa koden?

Jag skall försöka förklara:
Jag använder boken: "Teach Yourself ASP 3.0 på 21 dagar" av Mitchell & Atkinson. Men jag försöker "tänka lite sjäv" för att se om jag kan tänka ASP och använda mig av principer och kunskaper som jag lärt mig från dels Er på webforum och dels från boken - så jag har gjort ändringar/modifieringar och dessa tänkte jag testa (om det går) undan för undan.
I boken står tex.:

Dim iLoop
For iLoop=1 to adim
    almanacka(iLoop + fdm -1) = iLoop
Next

Och eftersom jag tolkar detta som att man: loopar från fdm till adim så skrev jag koderna som jag gjorde..
Och det är detta jag försöker testa---

247 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)