在vbscript中,你可以在if语句中使用两个可能的条件吗?(或)

4
一个例子是:
If filter_purchase = 0 Or "" Then
SetDocVar "filter_purchase", "0"
Else
SetDocVar "filter_purchase", CStr(filter_purchase)
End If

我遇到了“类型不匹配”的问题。有比使用Else IF更简单的方法吗?

你的意思是 filter_purchase == 0 而不是 = 吗? - agamike
3个回答

4

你需要明确说明每个OR的条件。请见下方

If filter_purchase = 0 Or filter_purchase = "" Then
   SetDocVar "filter_purchase", "0"
Else
   SetDocVar "filter_purchase", CStr(filter_purchase)
End If

0

这应该是你想要的条件

If ((filter_purchase = 0) Or (filter_purchase = "")) Then

@agamike,我相信在vbs中单个=用于比较,而不是== 链接在这里


0

如果你只是想测试一个未初始化的变量,那么你的If表达式实际上是多余的。在VBScript中,所有变量都是变体类型,并且所有变体类型都有一个默认值0/False/""。例如:

Dim v
If v = ""    Then MsgBox "Empty string"
If v = 0     Then MsgBox "Zero"
If v = False Then MsgBox "False"

这三个测试都会通过。注意你可以将单个变量与字符串、数字和布尔字面值进行比较。未初始化的变量还没有类型,所以这种比较是完全可以的。

然而,一旦你给变量赋值,在进行比较时就需要考虑它的类型。例如:

Dim v
v = ""
If v = ""    Then MsgBox "Empty String"    ' Pass.  "" = "".
If v = 0     Then MsgBox "Zero"            ' Fail! Illegal comparison.
If v = False Then MsgBox "False"           ' Fail! "" <> False.

现在,由于变量已被定义为保存字符串,因此它需要与其他字符串类型(文字或变量)或可以转换为字符串的值进行比较(无论是隐式还是显式转换)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接