On Sun, 4 Feb 2007 17:58:27 +0100, "Magnus" <magnusFJERN@arnason.dk>
wrote:
>Jeg får en fejl når jeg vil undersøge om Session("id-nr") er større end "0"
>hvis Session("id-nr") ikke er et tal.
Ja, det kan man nemt få.
>Kan det være rigtigt så skal den vel bare sige at udtrykket ikke er sandt.
>
>Så gør jeg sådan hvor jeg først kontrollerer om Session("id-nr") er et tal
>og derefter om det er større end "0".
>
>If IsNumeric(Session("id-nr")) then
> If Session("id-nr")>0 then
> response.write "JA"
> end if
>end if
>
>Er det måden at gøre det rigtigt på?
Nej, IsNumeric vil svare True til både "2" og 2.
Prøv selv at teste:
<%
a = "11"
b = "2"
c = 22
Response.Write IsNumeric(a) & "<br>" & vbcrlf
Response.Write IsNumeric(b) & "<br>" & vbcrlf
Response.Write IsNumeric(c) & "<br>" & vbcrlf
Response.Write (a > b) & "<br>" & vbcrlf
Response.Write (a > c) & "<br>" & vbcrlf
%>
- den vil returnere:
True - a numerisk
True - b numerisk
True - c numerisk
False - "11" > "2" (streng-sammenligning)
True - "11" > 22 (sammenligning af tal og streng)
Du får False på næstsidste, fordi der sammenlignes mellem to strenge,
hvor første tegn "1" er mindre end første tegn "2"
Du får True på den sidste, fordi der sammnenlignes mellem en streng og
et tal. Her er tallet altid mindst.
Se dokumentationen:
-----------
When comparing two expressions, you may not be able to easily
determine whether the expressions are being compared as numbers or as
strings.
The following table shows how expressions are compared or what results
from the comparison, depending on the underlying subtype:
If -> Then
1) Both expressions are numeric
-> Perform a numeric comparison.
2) Both expressions are strings
-> Perform a string comparison.
3) One expression is numeric and the other is a string
-> The numeric expression is less than the string expression.
4) One expression is Empty and the other is numeric
-> Perform a numeric comparison, using 0 as the Empty expression.
5) One expression is Empty and the other is a string
->Perform a string comparison, using a zero-length string ("") as the
Empty expression.
6) Both expressions are Empty
-> The expressions are equal.
-----------
Løsningen er at "typecaste" (konvertere til en bestemt datatype) til
et numerisk format - prøv fx:
If IsNumeric(Session("id-nr")) Then
If CLng(Session("id-nr")) > 0 Then
- osv.
Noget andet er, at det måske er smartere at gøre det, når værdien
*indsættes* i Session-variablen.
Good luck!
--
Jørn Andersen,
Brønshøj
|