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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2014, 12:35   #1  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Так работает
Цитата:
Сообщение от AndyD Посмотреть сообщение
Так можно


X++:
qbds.addRange(fieldnum(table1,field1)).value(strfmt("!A*"));
qbds.addRange(fieldId2Ext(fieldnum(table1,field1), 1)).value(strfmt("!B*"));
А так не работает?
X++:
 qbds.addRange(fieldnum(table1,field1)).value(strfmt("!1*"));
qbds.addRange(fieldnum(table1,field1)).value(strfmt("!2*"));
Странно, а в чем отличия этих условий?

Последний раз редактировалось maldini; 14.01.2014 в 12:37.
Старый 14.01.2014, 13:22   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от maldini Посмотреть сообщение
Странно, а в чем отличия этих условий?
Во внутреннем представление кодов полей. В первом случае query считает что поля разные, а условия на разные поля соединяются по 'И'.
Сравните
X++:
info("%1", fieldnum(table1,field1));
info("%1", fieldId2Ext(fieldnum(table1,field1), 1));
Заметьте, такой финт ушами позволит соединить два условия но не больше.
Старый 14.01.2014, 13:54   #3  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Во внутреннем представление кодов полей. В первом случае query считает что поля разные, а условия на разные поля соединяются по 'И'.
Сравните
X++:
info("%1", fieldnum(table1,field1));
info("%1", fieldId2Ext(fieldnum(table1,field1), 1));
Заметьте, такой финт ушами позволит соединить два условия но не больше.
Так вот такое условие тоже дает И
X++:
addRange(fieldnum(table1,field1)).value(strfmt("!1*,!2*"));
Вот пример
X++:
    queryBuildDataSource = query.addDataSource(tablenum(InventTable));
    queryBuildDataSource.addSelectionField(fieldnum(InventTable, ItemId));
    queryBuildDataSource.addRange(fieldnum(InventTable, ItemId)).value(strfmt("!1*,!2*"));
А вот запрос отправляемый на SQL
Код:
Оператор SQL: (InventTable) SELECT A.ITEMID,A.RECID FROM INVENTTABLE A WHERE ((DATAAREAID=?) AND ( NOT ((ITEMID LIKE ? ESCAPE '\' )) AND NOT ((ITEMID LIKE ? ESCAPE '\' )))) ORDER BY A.DATAAREAID,A.ITEMID

Последний раз редактировалось maldini; 14.01.2014 в 13:57.
Старый 14.01.2014, 16:24   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от maldini Посмотреть сообщение
Так вот такое условие тоже дает И
А это уже по другой причине. Это не расширенный синтаксис, а обыкновенный. И через запятую в нём обычные условия добавляются по ИЛИ, но в случае добавления отрицания - по ИЛИ. Так всегда было

P.S.: См. также Отличия операторов ! и != в фильтрах
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axperf: Improving SSRS Query-based Report Performance by not Using Display Methods - Part 3 Blog bot DAX Blogs 0 23.07.2013 21:12
ax-erp: ‘Not Like’ in Dynamics AX Blog bot DAX Blogs 0 13.09.2012 21:11
'Not between' используя Query клас vitaly85 DAX: Программирование 5 18.10.2010 08:40
like запрос с использованием query Vadik Shiryakoff DAX: Программирование 7 13.03.2006 12:05

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:30.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.