MS Access 表单 - 来自文本框的字符串,用于 LIKE 查询以过滤报告结果

MS Access Form - string from textbox used for LIKE query to filter report results

我有一个表单,用户希望在其中的文本框中输入项目名称的部分或完整字符串值,点击表单中的一个按钮,然后打开一个仅包含按这些结果过滤的项目的报告。例如,如果我输入 "Acc",我的 project_name 字段中的所有结果将只包括带有 "Acc."

的结果

我可以通过查询使其正常工作 (Like "*" & [Enter keyword] & "*"),但我想通过表单来实现。我也有一些其他字段也想这样做,我不想为每个字段创建一个新的报告和查询。我宁愿能够用 VBA 和一个表格来做到这一点。

我的代码打开了报告,但没有结果。我什至尝试输入单个字母(即 "a")或其他显然没有运气的字符串。这是我的代码:

  Private Sub Command0_Click()

  Dim stDocName1 As String, strwhere1 As String
  Dim stLinkCriteria1 As String
  stDocName1 = "Grantlist"
  strwhere1 = project_name = "Like *'" & Me![findproject] & "*'"
  DoCmd.OpenReport stDocName1, acViewReport, , strwhere1, acWindowNormal

  End Sub

我猜 * 必须在单引号内:

"Like '*" & Me![findproject] & "*'"

也 project_name 必须与语句连接:

strwhere1 = project_name & " Like '*" & Me![findproject] & "*'"

strwhere1 = 的右侧设为一个字符串

只使用 Like 而不是 = Like

将单引号移到 * 之前 Like

strwhere1 = "project_name Like '*" & Me![findproject] & "*'"

检查您传递给 DoCmd.OpenReportWhereCondition 可能会有用。使用 Debug.Print 将其显示在立即 window 中。你可以使用Ctrl+g去那里

Debug.Print strwhere1
DoCmd.OpenReport stDocName1, acViewReport, , strwhere1, acWindowNormal