首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在in语句中使用表单中的参数

在in语句中使用表单中的参数
EN

Stack Overflow用户
提问于 2015-04-21 17:44:19
回答 2查看 248关注 0票数 1

我有一个带有几个输入的表单,然后将这些输入传递给查询。这非常简单,但我希望在sql中的in语句中使用参数之一,如下所示:

代码语言:javascript
复制
Select sum(id) as numobs from table where year=[form]![form1]![year] and (group in([form]![form1]![group]));

当form="3,4“在(34)中查询”组“时,如果form="3,4”,则会出现一个错误,即“该表达式键入错误,或者它太复杂,无法计算.”

我希望能够在表单中的字段中输入由逗号分隔的多个数字,然后让查询在in语句中使用结果。这看起来可行吗?

我知道,使用VBA,我可以做if-然后语句来查看每一个可能的组数组合(有40多个组,所以组合起来有超过4万亿种方法来组合40+组,因为42选择k从0到42是超过4万亿),所以使用IN语句似乎是一个更好的选择。

对于如何让IN语句与表单中的参数一起工作有什么想法吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 08:25:48

这可以非常简单地通过VBA模块中的sub来完成:

代码语言:javascript
复制
Sub MakeTheQuery()
    Dim db As DAO.Database
    Dim strSQL As String
    Dim strElements As String

    Set db = CurrentDb()

    strSQL = "SELECT Sum(id) AS numobs " & _
        "FROM ErrorKey WHERE ErrorKey.ID In ({0});"

    ' Example: "3,5"
    strElements = Forms!YourForm!YourControl.Caption

    ' Assign SQL to query
    db.QueryDefs!YourQuery.SQL = Replace(strSQL, "{0}", strElements)

End Sub
票数 0
EN

Stack Overflow用户

发布于 2016-07-28 18:50:12

您可以考虑Instr()函数而不是In。假设您是按过程生成编号列表,而不是强迫最终用户键入逗号分隔的列表,则可以更改格式。我们通常使用管道分隔符,因此,例如,输入可能如下所示:将[form]![form1]![group]="|3|4|"作为单个字符串参数传递给查询,并在Instr()函数中进行测试,如下所示:Instr([form]![form1]![group],"|" & group & "|")>0 ' Instr() returns a numeric value of the position in the first argument where the second argument is found.管道确保不获得假阳性(例如,在传递34时查找3)。我们使用这个多选择列表框和一个自定义的VBA功能,但它是完全可行的任何时候,你可以控制的格式。Instr函数- support.office.com

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29779515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档