AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.09.2005, 17:49   #1  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
? Как в динамическом запросе использовать исловие OR между двумя полями?
Пожалуйста, подскажите,как в динамическом запросе использовать условие OR между двумя полями,например:

table1.field1 == 1 or table1.field2 == 1

Большое спасибо
Старый 27.09.2005, 17:54   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Добавить еще один рэндж на то же самое поле.

С Уважением,
Георгий
Старый 27.09.2005, 17:59   #3  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
есть два поля, либо одно,если подходит,либо другое,если подходит...
Старый 27.09.2005, 18:00   #4  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
PHP код:
.AddRange(fieldnum(table1field1)).value("((table1.field1==1) || (table1.field2==1))"
__________________
Axapta v.3.0 sp5 kr2
Старый 27.09.2005, 18:01   #5  
yooshi is offline
yooshi
Участник
 
48 / 10 (1) +
Регистрация: 26.05.2005
Большое спасибо)
Старый 27.09.2005, 18:02   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
George - я думаю имелось ввиду - то, на что нужно ответить "Поиск рулит"

Конретно - http://forum.mazzy.ru/index.php?showtopic=294
__________________
Возможно сделать все. Вопрос времени
Старый 27.09.2005, 18:22   #7  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано sukhanchik
George - я думаю имелось ввиду - то, на что нужно ответить "Поиск рулит"
Мда. Надо поставить в подпись

С Уважением,
Георгий
Старый 07.08.2009, 08:25   #8  
Tolikv is offline
Tolikv
Участник
 
20 / 11 (1) +
Регистрация: 14.05.2007
А как сделать запрос если у меня 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  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Tolikv Посмотреть сообщение
Вот мой пример помогите составить запрос:

X++:
        Criteria = this.query().dataSourceTable(tablenum(Table1)).addRange(fieldnum(Table1, RecId));

        Criteria.value("((Field1 <= "+queryValue(Value1)+") && (Field2 >="+queryValue(Value1)+") && (Field3 == "+Value2+"))");
У вас условия заданы через AND. В этом случае не обязательно использовать расширенный синтаксис, можно обойтись обычным range.
Старый 07.08.2009, 10:08   #10  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
У вас условия заданы через AND. В этом случае не обязательно использовать расширенный синтаксис, можно обойтись обычным range.
Важно не только то, что через AND, но и то что на разные поля.

На разные поля Рэнджи соединяются по "И", а на одинаковые - по "ИЛИ" (из за чего чаще всего и приходится писать расширенный рэндж).
Вам, Tolikv, действительно он не нужен.
__________________
Zhirenkov Vitaly
Старый 07.08.2009, 10:55   #11  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ZVV Посмотреть сообщение
На разные поля Рэнджи соединяются по "И", а на одинаковые - по "ИЛИ"
+ наличие отрицания в условии, тоже вносит свои коррективы.

И вспомнил ещё один ньюанс.
Нестрогие неравенства в range задаются не символами '>=', '<=' а символом диапазона '..'. Для получения такого условия предназначена функция SysQuery::range()

P.S.: http://axapta.mazzy.ru/lib/search/
Старый 07.08.2009, 14:13   #12  
Tolikv is offline
Tolikv
Участник
 
20 / 11 (1) +
Регистрация: 14.05.2007
Это всё понятно, но у меня это выражение в цикле, т.е. получется так:

Criteria.value("((Field1 <= "+queryValue(Value1)+") && (Field2 >="+queryValue(Value1)+") && (Field3 == "+Value2+"))"); затем идёт || и снова этоже выражение только с другими value
Старый 07.08.2009, 16:34   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Tolikv Посмотреть сообщение
Это всё понятно, но у меня это выражение в цикле...
Т.е. без цикла (с одной итерацией) работает?

Попробуйте после цикла взять всё условие в ещё одни круглые скобки.
Поэкспериментируйте (добавьте, удалите) с пробелами вокруг операторов ||.
Так же возможно, что вы превысили допустимый размер строки условия. Какую длинну имеет результирующее условие. Проверьте, что Criteria.value() не обрезает переданную строку
Теги
query, запрос (query), фильтр

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересчет между двумя единицами измерения на уровне партии Андре DAX: Функционал 15 22.10.2013 00:26
Как сделать AND между двумя датасорсами на одном уровне в query rkorchagin DAX: Программирование 15 15.01.2009 17:42
Можно ли в инамическом запросе использовать "group by"? yooshi DAX: Программирование 26 23.09.2005 16:35
Как правильно установить связь между двумя записями в InventDim Sirius DAX: Программирование 0 25.05.2004 16:50
Cвязь данных между двумя формами Artild DAX: Программирование 11 24.06.2003 10:45

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:53.