webForumDet fria alternativet

type mismatch

14 svar · 379 visningar · startad av fundrusse

fundrusseMedlem sedan jan. 2002286 inlägg
#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

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

Får ändå samma fel

NickemannenMedlem sedan aug. 20003 575 inlägg
#4

fälten kanske är null ?

LarsGMedlem sedan dec. 200012 464 inlägg
#5

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

fundrusseMedlem sedan jan. 2002286 inlägg
#6

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

Engine^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
Jesper TMedlem 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.

fundrusseMedlem 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. ;)

mrblondeMedlem 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.

Erik JuhlinMedlem 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.

mrblondeMedlem sedan aug. 20012 349 inlägg
#12

det var underförstått ;)

fundrusseMedlem sedan jan. 2002286 inlägg
#13

Med CInt får jag följande fel

Microsoft VBScript runtime error '800a0006' 

Overflow: 'Cint'
@ndersMedlem sedan juni 200032 969 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.

Engine^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...

142 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)