2016-12-16 79 views
0

我有我使用的填充查询的窗体。我在下面给出了一个代码片段。有多个字段供用户输入信息以缩小报告范围。我发现了下面的代码,如果用户只希望每个类别做一个选择,即“status”= C,那么它就很好。我的问题是,有些情况下用户可能一次查找多个状态。如果我现在以C或S形式输入表单,则查询填充为C或S,由于它应该是“C”或“S”或CS,所以不会产生结果。任何人都可以帮助我转换此代码,以允许输入多个值并将其正确读入查询中?Access查询在一个领域

Function SearchCriteria() 

Dim strSQL As String 
Dim tblname, strqry As String 
Dim qdf As QueryDef 
Set dbs = CurrentDb 

Dim allexists As QueryDef 

strqry = "All Selected" 

tblname = "SelectionWeeklyAuto1000" 

On Error GoTo err_handler 

Set allexists = dbs.QueryDefs("All Selected") 

err_handler: 
    Select Case Err.Number 
    Case 3265 

    strSQL = "SELECT " & tblname & ".* From " & tblname & " WHERE (1=1)" 

    Set qdf = dbs.CreateQueryDef(strqry) 
    qdf.SQL = strSQL 
    DoCmd.Save 

End Select 

DoCmd.DeleteObject acQuery, strqry 


Set qdf = dbs.CreateQueryDef(strqry) 

strSQL = "SELECT " & tblname & ".* From " & tblname & " WHERE (1=1)" 

If Not IsNull([Forms]![Report Tool]![Text1]) Then 
    strSQL = strSQL & " And ([Screen] Like ""*" & [Forms]![Report Tool]![Text1] & "*"")" 

End If 

If Not IsNull([Forms]![Report Tool]![Text2]) Then 
    strSQL = strSQL & " And ([Status] Like ""*" & [Forms]![Report Tool]![Text2] & "*"")" 

End If 

回答

0

那么忽略了你的主要问题是使用=和代码段使用Like的事实,我将扩展的代码片段作为

strSQL = strSQL & " And ([Status] Like ""*" & Replace([Forms]![Report Tool]![Text2], " or ", "*"" Or [Status] Like ""*") & "*"")" 
+0

谢谢你的帮助@Skippy。它的工作原理与我期望的完全相同。希望当我学习时,我会更好地提出这个问题。 – MattM52