MS Access Form - 用于LIKE查询的文本框中的字符串,用于过滤报表结果

问题描述 投票:2回答:2

我有一个表单,用户希望在文本框中输入项目名称的部分或完整字符串值,点击表单中的按钮,然后打开仅包含按这些结果过滤的项目的报表。例如,如果我输入“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
sql forms ms-access access-vba wildcard
2个回答
2
投票

使strwhere1 =的右侧单个字符串

使用Like而不是= Like

*之后的Like之前移动单引号

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

检查你传递给DoCmd.OpenReport的WhereCondition可能会有用。使用Debug.Print在立即窗口中显示它。您可以使用Ctrl + g去那里。

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

0
投票

我想*必须在单引号内:

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

project_name必须与语句连接:

strwhere1 = project_name & " Like '*" & Me![findproject] & "*'"
© www.soinside.com 2019 - 2024. All rights reserved.