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