MS Access Form - строка из текстового поля, используемая для запроса LIKE для фильтрации результатов отчета. - PullRequest
2 голосов
/ 02 апреля 2019

У меня есть форма, в которой пользователь захочет ввести частичное или полное строковое значение имени проекта в текстовом поле, нажать кнопку в форме и открыть отчет, который включает только проекты, отфильтрованные по этим результатам.Например, если я введу «Acc», все результаты в моем поле имя_проекта будут включать только результаты с «Acc».

Я могу заставить это работать из запроса просто отлично (Like "*" & [Enter keyword] & "*"), но я хочу сделать это из формы.У меня также есть несколько других полей, с которыми я бы тоже хотел это сделать, и я не хочу создавать новый отчет и запрос для каждого поля.Я бы предпочел сделать это с помощью VBA и формы.

Мой код открывает отчет, но результатов нет.Я даже пытался вводить отдельные буквы (например, «а») или другие явно строки без удачи.Вот мой код:

  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

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Сделать правую часть strwhere1 = одной единственной строки

Использовать просто Like вместо = Like

Переместить одинарную кавычку перед * после Like

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

Вероятно, было бы полезно проверить WhereCondition , которое вы передаете DoCmd.OpenReport.Используйте Debug.Print, чтобы отобразить его в окне «Немедленно».Вы можете использовать Ctrl + g , чтобы перейти туда.

Debug.Print strwhere1
DoCmd.OpenReport stDocName1, acViewReport, , strwhere1, acWindowNormal
0 голосов
/ 02 апреля 2019

Я полагаю, что * должно быть в одинарных кавычках:

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

также имя проекта должно быть объединено с оператором:

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