我如何在 VB 中的 if not 语句中使用多个条件

时间:2021-03-29 17:45:17

标签: asp.net vb.net

使用 VB 处理旧的遗留代码。我正在尝试写——如果 itemA 不等于 111 或 itemA 不等于 222,那么如果这些 itemaA 111 和 222 输入结束,则无法输入未来日期,那么未来日期将被排除在外。我用谷歌搜索,并没有真正找到任何关于它的东西。语法在某处是错误的。我可以不使用 2 个不带“或”的条件吗

谢谢

   If NOT (itemA =  111) or not (itemA = 222) then
     begin
       if dateEntered > Date then
         begin
           Dialog ('Future date not allowed for item.');
           restart;
       end;   
    end;

3 个答案:

答案 0 :(得分:0)

解决了。

代替

 if not (itemA = 111) or not (itemA=222) then...

它与

if not ((itemA = 111) or (itemA=222)) then ...

括号起到了作用

答案 1 :(得分:0)

我认为原来的逻辑是错误的。我的意思是你可以在 vb 中做到这一点:

   If Not (itemA = 111) Or Not (itemA = 222) Then
        If dateEntered > Date.Today Then
            MsgBox("Future date not allowed for item.")
            Exit Sub
        End If
    End If

但我不认为这是或原来是正确的。上面的 if 总是正确的,因为一个或另一个总是会发生?

我认为你需要这个:

    If Not (itemA = 111) And Not (itemA = 222) Then
        If dateEntered > Date.Today Then
            MsgBox("Future date not allowed for item.")
            Exit Sub
        End If
    End If

以上是这里的 1 对 1 转换。 (是的,它看起来像 delphi)。

如前所述,也许可以这样写:

    If (itemA <> 111) And (itemA <> 222) Then
        If dateEntered > Date.Today Then
            MsgBox("Future date not allowed for item.")
            Exit Sub
        End If
    End If

但如前所述,使用“或”似乎没有意义。 delphi 有可能做了或做了一点点 OR - 但这似乎仍然没有多大意义。

答案 2 :(得分:-1)

根据您编写的内容,VB 代码将类似于:

If itemA <> 111 Or itemA <> 222 Then
    ...
End If

或者,或者,也许更清楚:

If Not (itemA = 111 And itemA = 222) Then
    ...
End If

然而,这两个选项都没有意义,因为条件总是解析为 True:itemA 不能同时等于 111 222。正确的逻辑应该是相反的,例如:

If itemA <> 111 And itemA <> 222 Then
    ...
End If

但我不认为你真正追求的是 VB 代码。