|
27.09.2005, 17:49 | #1 |
Участник
|
Как в динамическом запросе использовать исловие OR между двумя полями?
Пожалуйста, подскажите,как в динамическом запросе использовать условие OR между двумя полями,например:
table1.field1 == 1 or table1.field2 == 1 Большое спасибо |
|
07.08.2009, 08:25 | #2 |
Участник
|
А как сделать запрос если у меня Value разные?
Вот мой пример помогите составить запрос: X++: Criteria = this.query().dataSourceTable(tablenum(Table1)).addRange(fieldnum(Table1, RecId)); Criteria.value("((Field1 <= "+queryValue(Value1)+") && (Field2 >="+queryValue(Value1)+") && (Field3 == "+Value2+"))"); Последний раз редактировалось Tolikv; 07.08.2009 в 08:36. |
|
07.08.2009, 10:05 | #3 |
Участник
|
У вас условия заданы через AND. В этом случае не обязательно использовать расширенный синтаксис, можно обойтись обычным range.
|
|
07.08.2009, 10:08 | #4 |
MCITP
|
Цитата:
На разные поля Рэнджи соединяются по "И", а на одинаковые - по "ИЛИ" (из за чего чаще всего и приходится писать расширенный рэндж). Вам, Tolikv, действительно он не нужен.
__________________
Zhirenkov Vitaly |
|
07.08.2009, 10:55 | #5 |
Участник
|
+ наличие отрицания в условии, тоже вносит свои коррективы.
И вспомнил ещё один ньюанс. Нестрогие неравенства в range задаются не символами '>=', '<=' а символом диапазона '..'. Для получения такого условия предназначена функция SysQuery::range() P.S.: http://axapta.mazzy.ru/lib/search/ |
|
07.08.2009, 14:13 | #6 |
Участник
|
Это всё понятно, но у меня это выражение в цикле, т.е. получется так:
Criteria.value("((Field1 <= "+queryValue(Value1)+") && (Field2 >="+queryValue(Value1)+") && (Field3 == "+Value2+"))"); затем идёт || и снова этоже выражение только с другими value |
|
07.08.2009, 16:34 | #7 |
Участник
|
Т.е. без цикла (с одной итерацией) работает?
Попробуйте после цикла взять всё условие в ещё одни круглые скобки. Поэкспериментируйте (добавьте, удалите) с пробелами вокруг операторов ||. Так же возможно, что вы превысили допустимый размер строки условия. Какую длинну имеет результирующее условие. Проверьте, что Criteria.value() не обрезает переданную строку |
|
Теги |
query, запрос (query), фильтр |
|
|