我有一個表單中有幾個複選框。勾選複選框的值在包含Excel宏的SQL查詢中使用。我在SQL「IN」 - 操作符中使用這些值。所以,everythig工作。但我不喜歡我的宏的代碼。使用SQL中的複選框值「IN」--operator
對於勾選複選框我用這樣的代碼(如果有更多的價值列表將是非常巨大的):
Public Location1 As String
Public Location2 As String
Public Location3 As String
Public Location4 As String
Private Sub OKCommandButton2_Click()
If CheckBox1.Value = True Then Location1 = "LocationValue1"
If CheckBox2.Value = True Then Location2 = "LocationValue2"
If CheckBox3.Value = True Then Location3 = "LocationValue3"
If CheckBox4.Value = True Then Location4 = "LocationValue4"
...
而對於在SQL中使用它,我用這樣的代碼:
query = "SELECT Param1, Param2, Param3, Param4, 0, 0, Param5, 0 FROM Table1 " & _
"WHERE Param1 like'" & "%" & CraftDefinition.Craft & "%" & "'AND Param6>0 AND Param2 IN ('" & _
LocationDefinition.Location1 & "','" & LocationDefinition.Location2 & "','" & LocationDefinition.Location3 & "','" & _
LocationDefinition.Location4 & "')" & _
"ORDER BY Param2, Param3"
問題是:我可以用更緊湊,簡潔和複雜的方式重寫我的代碼嗎?也許我應該在SQL部分中使用另一個運算符;也許我可以重寫我的VBA部分,因爲在SQl中只使用一個參數。
謝謝。
什麼是'LocationDefinition'? – user3598756
這是一個帶有註釋複選框的表單名稱。 – Mikhail
我猜對了。看到我的回答 – user3598756