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

Большое спасибо
Старый 07.08.2009, 08:25   #2  
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   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 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   #4  
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   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ZVV Посмотреть сообщение
На разные поля Рэнджи соединяются по "И", а на одинаковые - по "ИЛИ"
+ наличие отрицания в условии, тоже вносит свои коррективы.

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

P.S.: http://axapta.mazzy.ru/lib/search/
Старый 07.08.2009, 14:13   #6  
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   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 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, время: 14:36.