我是MS访问的新手,正在努力提出正确的代码行以启用多参数搜索表单。我有一个查询,它从3个表中收集信息。此查询中的两个字段是级联组合框和列表框。列表框从组合框更新(通过Requery)。对于组合框中的每个值,列表框中有3-5个值。我试图建立一个搜索表单(带有电子表格的拆分表单),其中“未绑定”组合框和列表框将找到在列表框中选择的所有值,并在拆分表单的电子表格中显示结果值池。组合列表框和表单可以正常显示所有初始值,并且在列表框中仅选择一个值时可以正常运行。但是,当在列表框中选择多个值时,我会收到一条消息
查询表达式'(GistID =(4,9))'中的语法错误(逗号)
或类似名称,具体取决于GistName ID#。
此表单的代码:
Private Sub cmdSearch_Click()
Dim varItem as Variant
Dim strSearch As String
Dim Task as String
For Each varItem In Me!listbGist.ItemsSelected
strSearch=strSearch & "," & Me.listbGist.ItemData(varItem)
Next varItem
If Len(strSearch)=0 Then
Task="select * From qryScreening"
Else
strSearch=Right(strSearch, Len(strSearch)-1)
Task="select * from qryScreening where (GistID=("& strSearch & "))"
End if
DoCmD. ApplyFilter Task
End Sub
代码生成一个字符串,X,X,X,并且Len函数删除了我通过MsgBox(strSearch)获得的第一个逗号,但是如果在列表框中选择了多个值,则过滤器Task不会运行。 您能否为目前无法使用的该代码提出补救措施。
答案 0 :(得分:0)
您需要使用SQL IN
或构建OR
语句。 IN
更具可读性。
像这样:
=
必须像这样select * from [qryScreening] where [GistID] in (1,2,3,4,5)
另外,检查所选项目的数量可能会更好,而不是依赖字符串长度。