使用If Then语句的经典ASP类型不匹配

时间:2014-04-24 06:42:35

标签: vbscript asp-classic

有人可以告诉我为什么使用经典ASP错误抛出类型不匹配?

If (strPaidByPO = True) OR (arrResult(0) = "1") Then
  'Do Stuff
Else
  'Do Other stuff
End if

arrResults是一个数组,而strPaidByPO是一个变量。

谢谢,

2 个答案:

答案 0 :(得分:1)

If语句之前键入以下内容(我认为您可能会对类型做出假设)。

Call Response.Write(TypeName(strPaidByPO) & "<br />")
Call Response.Write(TypeName(arrResult) & "<br />")
Call Response.Flush()

如果您的变量属于您期望的类型,则应获得以下输出

Boolean
Variant()

如果你的数组是多维的,你可能会收到这个,在这种情况下你需要指定所有的维度。

另一种可能性是arrResult(0)包含String以外的内容。在这种情况下,使用TypeName(arrResult(0))来检查它是什么。

答案 1 :(得分:1)

尝试此操作并查看可以更正脚本的结果:

 response.write(cStr(strPaidByPO) & "- My strPaidByPO value<br>")
 response.write(arrResult(0) & "- My Array value")


 If (strPaidByPO = True) OR (cStr(arrResult(0)) = "1") Then
   'Do Stuff
 Else
   'Do Other stuff
 End if

但是如果你的strPaidByPO包含的值除了true - false(布尔值),你需要完全检查你的方法。例如,如果strPaidByPO为NULL或为空,则您的脚本将通过您所描述的错误。