Специальные символы в фильтре

336
Thomas Weller

У меня есть база данных Access для управления обучением сотрудников. Есть 2 случая, которые вызывают проблемы, и для одного я еще не нашел решение.

Случай 1: название тренинга содержит C++

Случай 2: это групповое обучение, в этом случае работник обозначается как *для всех

Когда я открываю базу данных, я могу применить фильтр к заголовкам столбцов, но он не фильтруется правильно. Я думаю, что специальные символы должны быть экранированы.

Я старался:

  • выберите одну из записей через флажок
  • используйте текстовый фильтр, который говорит "содержит ..." с различными экранированием, как показано ниже
  • использовать \в качестве escape-символа
  • использовать [... ]в качестве escape-символа (предложение на форуме), возможно, возвращаясь к оператору LIKE . Это работает для *части, но не работает для C++части
  • используя C??, но это также совпадает с такими терминами, какadvanced
  • построение формы для таблицы и последующая фильтрация в форме
  • Добавление точки останова и просмотр полученных фильтров. Я вижу, что +запрос разбивает, поэтому я также попытался использоватьC[++][++]

Как отфильтровать таблицу для записей, содержащих +?

Я использую Access 2016. Обратите внимание, что +это в данных, а не в имени таблицы или в имени столбца.

1
Не открывайте стол. Создайте и откройте форму в табличном представлении - она ​​имеет свойство Filter, которое может легко принимать нужные вам значения. Конечно, если вы используете оператор LIKE в значении Form.Filter, вы должны заключать в кавычки специальные символы, как в запросе. Akina 6 лет назад 0
@ Акина: я создал форму сейчас, но у нее та же проблема Thomas Weller 6 лет назад 0
Откройте форму в режиме дизайна. Откройте его код. Создайте метод Form_ApplyFilter, добавьте в него оператор Stop. Переключить форму в режим просмотра. Примените фильтр, который вам нужен (со значением (ями), которые содержат проблемы, вызванные символами). Когда выполнение остановится, откройте окна Locals и найдите значение Me.Filter, которое содержит необходимые вам символы и является правильным. Akina 6 лет назад 0
@ Акина: хорошо, я создал этот метод и добавил точку останова. Значение `Me.Filter` равно` "* C" + "+ *" `, когда я просто набираю` C ++ `. Значение фильтра равно `" C ["+"] ["+"] * "`, когда я набираю `C [+] [+]`. Кажется, что знак плюс всегда остается знаком плюс, несмотря ни на что. Thomas Weller 6 лет назад 0

0 ответов на вопрос