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
是否可行。
我正在使用一些代码来调整表单长度和一个 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
是否可行。