27.09.2005, 17:49 | #1 |
Участник
|
Как в динамическом запросе использовать исловие OR между двумя полями?
Пожалуйста, подскажите,как в динамическом запросе использовать условие OR между двумя полями,например:
table1.field1 == 1 or table1.field2 == 1 Большое спасибо |
|
27.09.2005, 17:54 | #2 |
Модератор
|
Добавить еще один рэндж на то же самое поле.
С Уважением, Георгий |
|
27.09.2005, 17:59 | #3 |
Участник
|
есть два поля, либо одно,если подходит,либо другое,если подходит...
|
|
27.09.2005, 18:00 | #4 |
Участник
|
PHP код:
__________________
Axapta v.3.0 sp5 kr2 |
|
27.09.2005, 18:01 | #5 |
Участник
|
Большое спасибо)
|
|
27.09.2005, 18:02 | #6 |
Administrator
|
George - я думаю имелось ввиду - то, на что нужно ответить "Поиск рулит"
Конретно - http://forum.mazzy.ru/index.php?showtopic=294
__________________
Возможно сделать все. Вопрос времени |
|
27.09.2005, 18:22 | #7 |
Модератор
|
Цитата:
Изначально опубликовано sukhanchik
George - я думаю имелось ввиду - то, на что нужно ответить "Поиск рулит" С Уважением, Георгий |
|
07.08.2009, 08:25 | #8 |
Участник
|
А как сделать запрос если у меня 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 | #9 |
Участник
|
У вас условия заданы через AND. В этом случае не обязательно использовать расширенный синтаксис, можно обойтись обычным range.
|
|
07.08.2009, 10:08 | #10 |
MCITP
|
Цитата:
На разные поля Рэнджи соединяются по "И", а на одинаковые - по "ИЛИ" (из за чего чаще всего и приходится писать расширенный рэндж). Вам, Tolikv, действительно он не нужен.
__________________
Zhirenkov Vitaly |
|
07.08.2009, 10:55 | #11 |
Участник
|
+ наличие отрицания в условии, тоже вносит свои коррективы.
И вспомнил ещё один ньюанс. Нестрогие неравенства в range задаются не символами '>=', '<=' а символом диапазона '..'. Для получения такого условия предназначена функция SysQuery::range() P.S.: http://axapta.mazzy.ru/lib/search/ |
|
07.08.2009, 14:13 | #12 |
Участник
|
Это всё понятно, но у меня это выражение в цикле, т.е. получется так:
Criteria.value("((Field1 <= "+queryValue(Value1)+") && (Field2 >="+queryValue(Value1)+") && (Field3 == "+Value2+"))"); затем идёт || и снова этоже выражение только с другими value |
|
07.08.2009, 16:34 | #13 |
Участник
|
Т.е. без цикла (с одной итерацией) работает?
Попробуйте после цикла взять всё условие в ещё одни круглые скобки. Поэкспериментируйте (добавьте, удалите) с пробелами вокруг операторов ||. Так же возможно, что вы превысили допустимый размер строки условия. Какую длинну имеет результирующее условие. Проверьте, что Criteria.value() не обрезает переданную строку |
|
Теги |
query, запрос (query), фильтр |
|
|