访问表单复选框在vba中填充sql

时间:2014-12-17 19:11:01

标签: sql vba ms-access access-vba ms-access-2007

所以这比典型的

稍微复杂一点
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中解释这个?

1 个答案:

答案 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语句。