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
------------------
-------------------
What a waste it is to lose one's mind. Or not to have a mind is being very wasteful. How true that is.
Dan Quayle