【发布时间】:2016-12-06 05:59:57
【问题描述】:
我有一个表格,里面有几个复选框。在 SQL 查询(包括 Excel 宏)中使用勾选复选框的值。我在 SQL“IN”运算符中使用这些值。所以,一切都有效。但我不喜欢我的宏的代码。
对于勾选复选框,我使用这样的代码(如果有更多的价值,列表会非常大):
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? -
这是一个带有注释复选框的表单名称。
-
我猜到了。看我的回答