Я читаю из базы данных доступа, используя соединение C # OleDB. Мне не нужны результаты длиной менее трех символов.
Мой текущий код отображает ошибку «Неверная строка шаблона». Почему я получаю эту ошибку и как ее исправить?
string qry = "Select * from Table1 where ((CALLNO not like '') and " +
"((CALLNO like '%" + suggestedCallNo + "%') or ('" + suggestedCallNo + "' like '%' & CALLNO & '%')) and " +
"((Len(CALLNO))>=3))";
OleDbCommand myCommand = new OleDbCommand(qry, myConnection);
OleDbDataReader myReader = myCommand.ExecuteReader();
Без ((Len(CALLNO))>=3)
этот код работает нормально. Однако, как только я добавляю строку, я получаю исключение "Недопустимая строка шаблона" , когда оно запускается для выполнения программы чтения.
Несколько вещей, которые я пробовал:
Вместо ((Len(CALLNO))>=3)
используйте (CALLNO not like '')
, это не вызывает никаких ошибок, поэтому я не пропускаю скобки.
Попытка использовать подстановочные знаки из одного символа, такие как '_'
, '_ _'
, '_ _ _'
, поэтому вместо ((Len(CALLNO))>=3)
я использовал (CALLNO not like '_')
, это приводит к той же "Неверной строке шаблона" . Фактически единственное, что я обнаружил, чтобы не выдавать ошибку, - это пустая строка ''
и полный шаблон '%'
.
Я также запустил запрос из строки запроса непосредственно при доступе, и там я не получаю никаких ошибок.
Спасибо за любую информацию,
LMB