mysql - 通过在一个字段中使用多个参数的表单 Access 查询

标签 mysql ms-access vba

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

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

最佳答案

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

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

关于mysql - 通过在一个字段中使用多个参数的表单 Access 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41187860/

相关文章:

excel - 默认情况下在切片器上启用多选

php - 通过javascript将html信息传递给php

mysql - 控制在 jpa 中创建表的顺序

sql - Access SQL - 更新表 A,其中 ID 不在表 B 中

ms-access - ADO 执行 - 编译错误 : User-defined type not defined

algorithm - 修改后的 VlookUp 返回与查找值对应的第 k 个值

php - 基于另一个列值设置新列值的 MySQL 脚本

php - 将月份和日期与当前日期进行比较

ms-access - 我无法在 VBA Access 中使用 UBound() 函数。好像没有被识别

vba - 显示宏正在执行的更新