我有一个表单,用户希望在文本框中输入项目名称的部分或完整字符串值,点击表单中的按钮,然后打开仅包含按这些结果过滤的项目的报表。例如,如果我输入“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
使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
我想*
必须在单引号内:
"Like '*" & Me![findproject] & "*'"
project_name必须与语句连接:
strwhere1 = project_name & " Like '*" & Me![findproject] & "*'"