【问题标题】:access form checkboxes populate sql in vba访问表单复选框在 vba 中填充 sql
【发布时间】:2014-12-17 19:11:01
【问题描述】:

所以这比典型的要复杂一些

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 年

所以在vba strsql中我想写

"select * from mytable where year=2012 or year=2014"  

问题是年份列表在增长,所以我不能硬编码它必须是动态的。例如明年我的原始sql也会选择2015,所以用户可能会标记

2012 x
2013 x
2014
2015 年

所以现在我的 vba strsql 将是

"select * from mytable where year=2012 or year=2013 or year=2015"  

列表每年都会增长,当复选框标记 = true 时,我如何在 vba strsql 中解释这一点?

【问题讨论】:

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


    【解决方案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 语句。

    【讨论】:

    • 漂亮、简短、聪明:)
    • @barker 的解决方案有问题吗?为什么不接受?
    • @barker 哦,也许我忘记了and control is checked?我已经在这里添加了。
    • 嘿抱歉 paqogomez,出于某种原因,这只是在我的表单中获取第一个值。让我在这里输入我的代码
    • @barker 如果您愿意,您可以将其发布在原始问题中,我很乐意提供帮助,但如果您发布新问题,您将获得更广泛的受众。
    猜你喜欢
    • 2012-02-29
    • 1970-01-01
    • 2017-08-16
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多