SQL 字符串变量中的多个 OR,VBA

Multiple OR in SQL string Variable, VBA

我正在使用一些代码来调整表单长度和一个 SQL 变量来修改显示在组合框中的名称。我想确保正在处理的组合框上方的组合框中的名称不显示任何名称。 因此,如果 Combo1 有 40 个名称,那么 Combo2 将只有 39 个,依此类推。 我的问题似乎是当我在 SQL 字符串的 WHERE 子句中使用多个 "OR" 时。任何人都可以建议吗?

Private Sub Worker3_Change()
Dim Worker4STR As String

'Shows Worker 4

Me.Worker4.RowSource = ""
Worker4STR = "SELECT T1Workers.NonUserID, T1Workers.[FirstName] & "" "" & [LastName] AS FullName FROM T1Workers WHERE T1Workers.NonUserID <>" & _
              Me.Worker1.Value & " OR " & Me.Worker2.Value & " Or " & Me.Worker3.Value
Me.Worker4.RowSource = Worker4STR

Me.Worker4.AllowValueListEdits = False
Me.Worker4.ColumnCount = 2
Me.Worker4.ColumnWidths = "0, "

Me.Worker4.Visible = True
Me.Activity4.Visible = True
Me.w4a1s.Visible = True
Me.w4a1d.Visible = True
Me.w4a1o.Visible = True
Me.w4a2s.Visible = True
Me.w4a2o.Visible = True
Me.w4a2d.Visible = True
Me.w4a3s.Visible = True
Me.w4a3o.Visible = True
Me.w4a3d.Visible = True
Me.w4a4s.Visible = True
Me.w4a4o.Visible = True
Me.w4a4d.Visible = True
Me.w4a5s.Visible = True
Me.w4a5o.Visible = True
Me.w4a5d.Visible = True
Me.InsideHeight = 1440 * 4.6

End Sub

提前致谢。 -马特

您的子句:

X <> A OR B OR C

无效SQL。您可以使用 NOT IN 代替:

"WHERE T1Workers.NonUserID NOT IN (" & _
              Me.Worker1.Value & " , " & _
              Me.Worker2.Value & " , " & _ 
              Me.Worker3.Value & " ) "

请注意,如果值是字符串,则它们至少需要用引号引起来。 更好 的解决方案是使用 SQL 参数,但我不知道 Worker4 是否可行。