在一个字段中使用多个参数按表单访问查询

Posted

技术标签:

【中文标题】在一个字段中使用多个参数按表单访问查询【英文标题】:Access Query by form using more than one parameter in one field 【发布时间】:2016-12-16 15:44:41 【问题描述】:

我有一个用于填充查询的表单。我在下面给出了一个代码 sn-p。有多个字段供用户输入信息以缩小报告范围。我找到了下面的代码,如果用户只想为每个类别做出一个选择,即“状态”= C,它会很好用。我的问题是,在某些情况下,用户可能一次查找多个状态。如果我现在在表单中输入 C 或 S,则查询将填充 C 或 S,这将不会产生任何结果,因为它应该是“C”或“S”或 CS。谁能帮我转换此代码以允许输入多个值并将其正确读取到查询中?

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

【问题讨论】:

【参考方案1】:

忽略您的主要问题是使用 = 并且代码 sn-p 使用 Like 的事实,我会将代码 sn-p 扩展为

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

【讨论】:

感谢@Skippy 的帮助。它完全按照我希望的那样工作。希望随着我的学习,我能更好地提出问题。

以上是关于在一个字段中使用多个参数按表单访问查询的主要内容,如果未能解决你的问题,请参考以下文章

访问:使用从另一个查询中选择的 DAO.recordset 运行查询

访问表单更新多个字段

访问错误,其中查询看到表单字段为空白

访问查询以了解哪些子表单已完成或尚未完成

访问视图中的嵌套表单字段(嵌入表单集合)

如何使用 sql-server 后端处理访问中的表单引用查询