我有一个表单中有几个复选框。勾选复选框的值在包含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