2017-06-07 77 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

謝謝你們兩位!我錯過了已經完成了技巧的括號! –