4

一个例子是:

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

但我得到一个“类型不匹配”。还有比做其他 IF 更简单的方法吗?

4

3 回答 3

3

您必须明确说明每个 OR 的条件。请看下面

If filter_purchase = 0 Or filter_purchase = "" Then
   SetDocVar "filter_purchase", "0"
Else
   SetDocVar "filter_purchase", CStr(filter_purchase)
End If
于 2014-06-14T19:42:16.933 回答
0

这应该是你想要的条件

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

@agamike,我相信一个 = 用于在 vbs 中进行比较,如果不是,而不是 ==链接在这里

于 2014-06-11T14:51:32.917 回答
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.

既然已将变体定义为包含字符串,则需要将其与其他字符串类型(文字或变量)或可以强制转换(隐式或显式)为字符串的值进行比较。

于 2014-06-11T21:59:23.423 回答