14.02.2005, 14:32 | #1 |
Участник
|
Возможность использования Like в QueryBuildRange
После долгого изучения этого форума так и не нашел ответа на вопрос.
Можно ли как-то использовать Like в запросе типа такого: query.dataSourceTable(TableNum(State)).addRange(State, 'Recid').value('((StateId like "77*") || (Name like "77*"))'); При такой записи получаю ошибку: "не хватает скобки". Если заменить "Like" на "=", то ошибки нет, но и результата тоже нет. Возможно, кто-то подскажет другой путь решения этой проблемы (по крайней мере Mazzy неоднократно в этом форуме (и не только в этом) упоминал, что если я пытаюсь использовать "Like", то что-то я делаю не так). Итак, имеем Web portal. Обычная веб форма для ввода адреса. У строки с выбором региона есть кнопка lookup, по которой открывается окошко со списком регионов с полями Id и Name. Есть там строчка для ввода фильтра и при ней кнопка "Поиск". Требуется, чтобы при нажатии на эту кнопку поиск введенного значения происходил как по полю Id, так и по полю Name (причем именно ИЛИ). При этом поиск должен быть именно по подстроке. |
|
14.02.2005, 14:45 | #2 |
Модератор
|
А как реанирует на "=="?
query.dataSourceTable(TableNum(State)).addRange(State, 'Recid').value('((StateId == "77*") || (Name == "77*"))'); С Уважением, Георгий. |
|
14.02.2005, 15:03 | #3 |
Участник
|
с like 'или' по разным полям не пройдёт
|
|
14.02.2005, 15:16 | #4 |
Участник
|
Цитата:
Изначально опубликовано George Nordic
А как реанирует на "=="? |
|
14.02.2005, 17:43 | #6 |
Участник
|
Спасибо. Я уж думал, что все ветки на этом форуме просмотрел. Оказалось, что были еще 3, которых я не видел.
Итого. Собственно варианта предлагалось 2. 1) Добавление стольких датасорсов, сколько полей необходимо включить в фильтр. 2) Использование select вместо query. 1-й вариант не нравится из-за своей громоздкости и корявости. С ужасом думаю о том, что пользователю вдруг понадобится поиск(фильтр) по 10 полям... 2-й вариант был бы неплох, но он неуниверсален. Даже в моем примере, query уже имеет один range: CountryId = RU. Если я вместо добавления фильтров буду их заменять, может повылезать много лишнего. Ввиду того, что красивого и правильного решения найти не удалось, было решено забить на это. Добавил на форму дополнительный контрол для выбора поля, по которому будет проводиться поиск(фильтрация). Поскольку поля по ИЛИ теперь связывать не надо, то оставил стандартный AddRange().Value('*подстрока*'). |
|