2016-12-16 82 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