/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
If Session("id-nr")>0 then giver fejl...
Fra : Magnus


Dato : 04-02-07 17:58

If Session("id-nr")>0 then

end if

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.

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å?


/Magnus





 
 
Jørn Andersen (04-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 04-02-07 19:08

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

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste