这是我的第一篇文章,所以如果我还没有达到所有惯例,请原谅。
问题如下,我刚刚开始创建MS Access数据库并且我已经相当擅长它,我刚刚完成了整个项目,我目前正处于创建报告的中间,我正在尝试创建一个带有选项卡控件的过滤器表单,并且在每个页面上都有一个多选列表框,它预填充了表中的数据,我无法使用按钮或类似工具创建过滤器,因为我希望它是动态的,过滤器必须支持多个条件,我试图使用我的代码的结果在查询中使用列表框的选择结果,我创建了一个用逗号分隔的数字串(我没有引用数字,因为我将它们与数字字段进行比较) 。我循环通过列表框中的所有选定项目,然后用逗号
分隔它们lstSel = lstSel & listbox.itemdata(index) &","
然后我使用
截断最后一个逗号lstSel = left(lstSel,Len(lstSel)-1)
然后我将值传递到我的表单上的文本框中,我试图在我的查询中使用
where [ID] in(Forms!myForm!myTxtbxResult)
我没有得到任何错误我重新查询控件和报告,但无济于事
答案 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',...)
应该解决哪个问题