webForumDet fria alternativet

type mismatch

ASP

14 svar · 382 visningar · startad av fundrusse

Medlem sedan jan. 2002286 inlägg
Frågan#1

Har ett litet problem som jag inte kommer runt..

jag skall jämföra 2 st fält (numeric) ex.

If fält1 <> fält2 OR fält1 = "0" Then
 Response.Write "Fel"
End If

Men då får jag bara:
Microsoft VBScript runtime error '800a000d'

Type mismatch

har provat int men det går inte heller

Medlem sedan dec. 200012 464 inlägg
#2
If fält1 <> fält2 OR fält1 = 0 Then
 Response.Write "Fel"
End If
Medlem sedan jan. 2002286 inlägg
#3

Får ändå samma fel

Medlem sedan aug. 20003 575 inlägg
#4

fälten kanske är null ?

Medlem sedan dec. 200012 464 inlägg
#5

Hur får fält1 och fält2 sina värden?

Medlem sedan jan. 2002286 inlägg
#6

Fält = RecSet("Fält") (fält är inte det riktiga fältnamnet)

Medlem sedan dec. 20003 887 inlägg
#7
If Not IsNull("Fält1") And Not IsNull(RecSet("Fält2")) Then
  If Not RecSet("Fält1") = RecSet("Fält2") Or RecSet("Fält1") = "0" Then
    Response.Write "Fel!"
  End If
Else
  Response.Write "Fält1 eller fält2 var NULL"
End If
Medlem sedan nov. 20017 144 inlägg
#8

Jag skulle låta bli att använda svenska bokstäver i dina kolumnnamn och i dina variabler. Men det kanske du inte har.

Medlem sedan jan. 2002286 inlägg
#9

Behöver inte kontrollera om fälten är Null för det är dom aldrig.
Nix jag använder inte svenska namn. ;)

Medlem sedan aug. 20012 349 inlägg
#10
If cint(fält1) <> cint(fält2) OR cint(fält1) = 0 Then
 Response.Write "Fel"
End If

Borde fungera om fälten alltid är numeriska.

Medlem sedan maj 200010 687 inlägg
#11

Och det aldrig finns tal större än 32768. Och det aldrig finns null i ett fält.

Medlem sedan aug. 20012 349 inlägg
#12

det var underförstått ;)

Medlem sedan jan. 2002286 inlägg
#13

Med CInt får jag följande fel

Microsoft VBScript runtime error '800a0006' 

Overflow: 'Cint'
Medlem sedan juni 200032 967 inlägg
#14

Vad innehåller fälten då?
Om de innehåller tal större än det Erik nämner så blir det fel. Använd en subtyp som tillåter större tal då, exempelvis long.

Medlem sedan dec. 20003 887 inlägg
#15

fundrusse skrev:

Med CInt får jag följande fel

Microsoft VBScript runtime error '800a0006' 

Overflow: 'Cint'

Betyder att det tal du vill konvertera till en integer är för stort.

Integer   -32,768 till 32,767
Long      -2,147,483,648 till 2,147,483,648

Så om du använder CLng() bör det fungera. Får du overflow då, så är nästa steg CSng() och skulle det av någon anledning inte räcka till så har du CDbl(). Nästa steg är att använda strängar och tolka talen själv...

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)