prova:
Dim monnr, slutdatum
monnr = Request.QueryString("monad")
slutdatum=31
If monnr = "02" Then slutdatum = 29
If monnr = "04" Or monnr = "06" Or monnr = "09" Or monnr ="11" Then slutdatum = 30
4 svar · 226 visningar · startad av webbmannen
Kan någon se något fel i detta?
Dim monnr, slutdatum
monnr = Request.QueryString("monad")
If monnr = 02 Then
slutdatum = 29
ElseIf monnr = 04 Or 06 Or 09 Or 11 Then
slutdatum = 30
Else monnr = 01 Or 03 Or 05 Or 07 Or 08 Or 10 Or 12
slutdatum = 31
End If
Som körs av:
For i = 1 To slutdatum
Response.Write "<td bgcolor=silver><font face=verdana,arial color=#FFFFFF size=1>"
Response.Write i
Response.Write "</font></td>"
Next
Av någon anledning så fungerar det som det ska på alla månader utom de som har 31 dagar. Där skrivs bara 30 ut.
Har även testat med ett avslut som ser ut så här:
Else
slutdatum = 31
End If
på slutet, men får samma resultat. Månaderna som ska ha 31 dagar får bara 30 st.
Vad är det jag inte ser/förstår
/webb
[Redigerat av webbmannen den 29 okt 2000]
prova:
Dim monnr, slutdatum
monnr = Request.QueryString("monad")
slutdatum=31
If monnr = "02" Then slutdatum = 29
If monnr = "04" Or monnr = "06" Or monnr = "09" Or monnr ="11" Then slutdatum = 30
Tack @nders,
Det fungerade perfekt
Nu skulle det vara ännu bättre om jag förstod varför det skulle skrivas på ditt sätt (som inte ens innehåller ett End If) och varför det inte fungerade på mitt sätt. Du eller någon annan som gitter förklara?
Stort tack
/webb
Oki
ElseIf monnr = 04 Or 06 Or 09 Or 11 Then
För det första så försöker du kolla om monnr är t.ex. 04. 04 är inte ett numeriskt värde, utan en sträng, och det måste därför inneslutas i citationstecken, dvs. "04"
För det andra fungerar logiska jämförelser inte riktigt som du skrev dem.
Om vi tänker oss att monnr innehåller värdet "04"...
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if monnr="04" then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
Här evalueras uttrycket monnr="04" och får värdet sant. "Sant!" skrivs ut.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if monnr="04" OR monnr="05" then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
evalueras till:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if true OR false then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
Eftersom det ena värdet i OR-jämförelsen sant (true) så blir hela uttrycket sant. "Sant!" skrivs ut.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if monnr="04" AND monnr="05" then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
blir..
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if true AND false then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
För att A AND B ska bli True så måste både A och B vara True. Så är det inte här, och "Falskt!" skrivs ut.
Vad händer då när....
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if monnr="04" AND monnr="05" OR monnr<>"" then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
Jo, det evalueras till:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if True AND False OR True then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
AND har precedens före OR (precis som "gånger" kommer före "plus"), så först evalueras den delen separat...
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if False OR True then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
Nu blev det dags för OR-operatorn, och eftersom uttrycket på ena sidan av OR är True, så blir hela uttrycket True. "Sant!" skrivs ut.
Vad händer då när du skriver
ElseIf monnr = 04 Or 06 Or 09 Or 11
?
Jo, det evalueras till...
ElseIf monnr = 4 Or 6 Or 9 Or 11
Vilket i sin tur blir (om monnr är 4)
ElseIf True Or True Or True Or True
Varför? Jo, de ensamma värdena jämförs inte med monnr, utan ses som egna logiska värden, där allt utom 0 är True.
Med andra ord...
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if 3456 then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
skriver ut "Sant!" medan
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
if 0 then
response.write "Sant!"
else
response.write "Falskt!"
end if
</font>
Skriver ut "Falskt!"
Raden...
Else monnr = 01 Or 03 Or 05 Or 07 Or 08 Or 10 Or 12
Fungerar heller inte, dels beroende på ovanstående, dels beroende på att ingen fråga ställs. Till det behövs If eller ElseIf.
Man behöver inte End If om man skriver det som ska hända om if-satsen blir sann, på samma rad.
Jmfr.
if a=1 then
blablabla
end if
if a=1 then blablabla
Hej och tack emission,
Det svaret måste väl ändå ge högsta betyg åt läsvärdet i denna tråd va
/webb (som blev lite klokare denna gång )