使用多选列表框中的结果作为查询where

时间:2018-01-08 06:13:58

标签: ms-access file-access

这是我的第一篇文章,所以如果我还没有达到所有惯例,请原谅。

问题如下,我刚刚开始创建MS Access数据库并且我已经相当擅长它,我刚刚完成了整个项目,我目前正处于创建报告的中间,我正在尝试创建一个带有选项卡控件的过滤器表单,并且在每个页面上都有一个多选列表框,它预填充了表中的数据,我无法使用按钮或类似工具创建过滤器,因为我希望它是动态的,过滤器必须支持多个条件,我试图使用我的代码的结果在查询中使用列表框的选择结果,我创建了一个用逗号分隔的数字串(我没有引用数字,因为我将它们与数字字段进行比较) 。我循环通过列表框中的所有选定项目,然后用逗号

分隔它们
lstSel = lstSel & listbox.itemdata(index) &","

然后我使用

截断最后一个逗号
lstSel = left(lstSel,Len(lstSel)-1)

然后我将值传递到我的表单上的文本框中,我试图在我的查询中使用
where [ID] in(Forms!myForm!myTxtbxResult)
我没有得到任何错误我重新查询控件和报告,但无济于事

2 个答案:

答案 0 :(得分:1)

看看Allen Browne提供的这个提示,无需查询:Use a multi-select list box to filter a report

答案 1 :(得分:0)

我知道这是一个很老的问题,但是如果其他任何人都在为此苦苦挣扎,我可以通过在字符串周围添加单引号来动态地使用IN运算符。

lstSel = lstSel & listbox.itemdata(index) &","

这将导致查询如下

Select * From ... IN(str1,str2,str3,...)

IN()的语法不正确(请参见here)。

但是,这个-

lstSel = lstSel & "'" & listbox.itemdata(index) & "'" &","

这将显示

Select .... IN('str1','str2','str3',...)

应该解决哪个问题