Когда ссылка на компонент Access встраивается в оператор SQL, любые ошибки, возникающие из таких ссылок, часто подавляются. Это относится и к данному SQL-запросу, поскольку свойство Textbox.Text
недоступно, если элемент управления не имеет фокуса. Если вы пытаетесь сослаться на элемент управления из другого кода VBA, например
Private Sub OtherField_GotFocus()
Debug.Print "Search: " & Me.Search.Text
End Sub
вы должны получить ошибку
Ошибка 2185: нельзя ссылаться на свойство или метод для элемента управления, если элемент управления не имеет фокуса.
И поскольку вы ссылаетесь на два отдельных элемента управления Textbox одинаковым образом, оба не могут иметь фокус в одно и то же время, поэтому всегда будут те или иные значения, неправильно включенные в запрос. Текст вопроса говорит, что
... он сохраняет запрос на основе исходных данных, а не данных результатов.
но я подозреваю, что запрос преобразуется во что-то вроде ... Like "*search_term*" and ... Like "**"
или ... Like "**" and ... Like "**"
в зависимости от того, какой элемент управления имеет фокус, поэтому одна сторона оператора AND всегда имеет значение True.
Несмотря на общность сообщения об ошибке, на свойство Value
можно ссылаться без фокусировки на элемент управления (и, следовательно, внутри оператора SQL). Недостаток в вашем случае заключается в том, что он не обновляется сразу при каждом новом нажатии клавиши, а также не при каждом срабатывании события Change
. Вам нужно будет разработать другой способ реализации «мгновенного» аспекта текстовых полей, или вам придется применить другой метод, например, традиционную кнопку поиска.