【问题标题】:How do i use multiple conditions in if not statement in VB如何在VB中的if not语句中使用多个条件
【发布时间】:2021-06-25 18:27:24
【问题描述】:

使用 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;

【问题讨论】:

  • 这是 VBScript 还是 VB.NET?请相应地标记。
  • 您想要的可能是itemA <> 111 AndAlso itemA <> 222Not (itemA = 111 OrElse itemA = 222)。 (如果您使用的是 VBScript 而不是 .NET,则使用“And”或“Or”代替“AndAlso”或“OrElse”。)
  • @ZevSpitz 发布的代码根本不是任何类型的 VB。它看起来像 Pascal 或 Delphi 或带有“开始”和“结束”的东西。
  • 可以是帕斯卡或德尔福。我得调查一下

标签: asp.net vb.net


【解决方案1】:

解决了。

而不是

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

它适用于

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

括号起到了作用

【讨论】:

    【解决方案2】:

    我认为原来的逻辑是错误的。我的意思是你可以在 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 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 - 但这似乎仍然没有多大意义。

    【讨论】:

      【解决方案3】:

      根据您编写的内容,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 代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-01
        • 1970-01-01
        • 2015-01-20
        • 2011-09-12
        • 2021-06-17
        • 1970-01-01
        • 2013-06-17
        相关资源
        最近更新 更多