2010-01-10 49 views
4

当查询字符串没有值时,我收到以下错误。 (我的意思是像index.asp?ID =)。类型不匹配:'[string:'“]'

Microsoft VBScript运行时错误 '800a000d'

类型不匹配:[字符串: “”]“

的index.asp,行10

我试图NULL值转换为用别的东西以下代码。它不起作用。

MEMBERID  = Request.QueryString("ID") 

If MEMBERID = "" or MEMBERID = 0 Then 
    MEMBERID = Session("MEMBERID") 
End If 
+0

不应该使用字符串比较函数吗? – 2010-01-11 13:52:07

回答

3

OK,你得到QueryString中的参数ID并检查它是否为空或者是正确的?所以,你应该这样做:

MemberId = Request.QueryString("ID") 
'* 
'* Check for other than numbers just to be safe 
'* 
If (MemberId = "" Or Not IsNumeric(MemberId)) Then 
    MemberId = Session("MemberId") 
End If 
'* 
'* We can't add this check on the above if because 
'* in classic ASP, the expression is evaluated as a whole 
'* which would generate an exception when converting to Int 
'* 
If (CInt(MemberId) = 0) Then 
    MemberId = Session("MemberId") 
End If 
2

如果要空转换为空字符串,使用字符串连接符&

MEMBERID = Request.QueryString("ID") & "" 
+0

QueryString永远不会返回null。 – AnthonyWJones 2010-01-11 13:27:52

0

检查无:

IF Request.QueryString("ID") IS Nothing Then 
... 
End If 
+0

QueryString.Item永远不会返回空对象引用。 – AnthonyWJones 2010-01-11 13:44:13

0

这里是我会怎么做: -

dim memberID : memberID = Request.QueryString("ID") 
if memberID <> "" then memberID = CLng(memberID) 
if memberID = Empty then memberID = Session("MemberID") 

查询字符串项属性返回或者一个EmptyString。它永远不会返回一个整数。

如果memberID不可分析为整数,那么此代码将会报错。然而,如果ID上的值应该是一个整数,但实际上是别的东西,那么我会希望它失败。

Empty比喻为等于零长度字符串和数字都为0

0

嗯,在我的情况下,代码是这样的:

if TRIM(variavel) <> "0" then 
    variavel = "1" 
end if 

与“默认”这里的解决方案,其中i工作是:

if isNull(variavel) then 
    variavel = "1" 
end if 

我希望它有帮助。