使用 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;
答案 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 代码。