所以这比典型的
稍微复杂一点strSQL = "sql string where & forms!myform.variable & "stuff"
我有一个表格会发生变化,用户会为它增加新的一年。所以明年将是新的2015年数据。我创建了一个带有每年复选框的表单,这个表单基于这个sql
select year from table group by year
如果用户标记了特定年份的复选框,我想根据用户复选框选择在vba strsql中编写查询。例如,我说我目前有3年,2012年,2013年,2014年,用户只标记2012年和2014年,跳过2013年看起来像
2012 x
2013
2014 x
所以在vba strsql中我想写
"select * from mytable where year=2012 or year=2014"
问题是年份增长的列表,所以我不能硬编码它必须是动态的。例如,明年我的原始sql也将选择2015,因此用户可能会标记
2012 x
2013 x
2014
2015 x
所以现在我的vba strsql将是
"select * from mytable where year=2012 or year=2013 or year=2015"
每年列表都会增长,当checkbox标记= true时,如何在vba strsql中解释这个?
答案 0 :(得分:1)
你需要循环你的值并连接到你的sql
这样的事情应该有效:
Private Sub CommandButton1_Click()
Dim strSQL = "select * from mytable where 1=1"
Dim cCont As Control
For Each cCont In Me.Controls
If TypeName(cCont) = "Checkbox" And cCont.Checked Then
strSQL = strSQL + " or year=" + cCont.Text
End If
Next cCont
我将1 = 1添加到where子句中,这样您就可以简化OR
语句而不必担心它是否是第一个OR
语句。