2017-06-07 41 views
0

我使用了一下,调节形式长度的代码和SQL变量来修改在组合框显示的名称。我想确保Comboboxes中正在处理的组合名称,不显示任何名称。 所以如果Combo1有40个名字,那么Combo2将只有39个,等等。 我的问题似乎是当我在SQL字符串的WHERE子句中使用多个“OR”时。谁能建议?多或SQL字符串变量,VBA

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 

先谢谢您。 -Matt

+0

你尝过......其中userid在(....) – maSTAShuFu

+0

使用IN或NOT IN子句我没有得到回报进入下一个组合框。 –

+0

你能告诉我们你的更新脚本是不是? – maSTAShuFu

回答

0

您的从句:

X <> A OR B OR C 

是不是有效的SQL。您可以使用NOT IN代替:

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

注意,如果值是,他们至少需要用引号括起来的字符串。 A 好得多解决方案是使用SQL参数来代替,但我不知道Worker4是否可以。

+0

通过使用“IN”或“NOT IN”子句,代码现在在下一个ComboBox中不返回任何内容。有另一种方法吗? –

+0

谢谢你们两位!我错过了已经完成了技巧的括号! –