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.OpenReport
的 WhereCondition 可能会有用。使用 Debug.Print
将其显示在立即 window 中。你可以使用Ctrl+g去那里
Debug.Print strwhere1
DoCmd.OpenReport stDocName1, acViewReport, , strwhere1, acWindowNormal
我有一个表单,用户希望在其中的文本框中输入项目名称的部分或完整字符串值,点击表单中的一个按钮,然后打开一个仅包含按这些结果过滤的项目的报告。例如,如果我输入 "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.OpenReport
的 WhereCondition 可能会有用。使用 Debug.Print
将其显示在立即 window 中。你可以使用Ctrl+g去那里
Debug.Print strwhere1
DoCmd.OpenReport stDocName1, acViewReport, , strwhere1, acWindowNormal