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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2009, 14:18   #1  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Расширенный фильтр в запрос или как то так
Честно говоря, нахожусь в легком ступоре.
Хочу в init датасорса формы добавить что то типа

this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value("больше к примеру поля salesPrice");
Пытался сделать чтота типа

s = "salesline.CreatedInPurch";
this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value(strFmt('>%1',s));
Но не фурычит.


как это сделать?
Заранее спасибо

Последний раз редактировалось Sada; 15.01.2009 в 14:23.
Старый 15.01.2009, 14:26   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Ну, как-то так?
X++:
...value('(SalesLine.SalesQty>SalesLine.SalesPrice)');
или даже просто так
X++:
...value('(SalesQty>SalesPrice)');
Причем необязательно занимать range для SalesQty - вдруг его надо будет пользователю предоставить для изменений. Повесьте это условие на какое-нибудь другое поле, хоть на RecId:
X++:
this.query().dataSourceTable(tableNum(SalesLine)).
addRange(fieldNum(SalesLine, RecId)).value('(SalesQty>SalesPrice)');
За это сообщение автора поблагодарили: Sada (1).
Старый 15.01.2009, 14:26   #3  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Sada Посмотреть сообщение
Честно говоря, нахожусь в легком ступоре.
Хочу в init датасорса формы добавить что то типа

this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value("больше к примеру поля salesPrice");
Пытался сделать чтота типа

s = "salesline.CreatedInPurch";
this.query().dataSourceTable(tableNum(SalesLine)).addRange(fieldNum(SalesLine, SalesQty)).value(strFmt('>%1',s));
Но не фурычит.


как это сделать?
Заранее спасибо
Ну вот расширенным фильтром и воспользуйтесь, типа как тут:
Вложенный датасорс с QueryRun

Ну только у вас будет что-то типа
X++:
   qbr.value(strFmt('( (%1.%2 > %1.%3) )'
                    ,qbds.name()
                    ,FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesQty))
                    ,FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesPrice))
                );
__________________
Zhirenkov Vitaly
Старый 15.01.2009, 14:36   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
2Gustav последний Ваш вариент работает как надо. Спасибо большое. Делал такое несколько лет назад. Чота забыл все. Всем спасибо. Тему можно закрывать Запомню такое на всю жизнь
Старый 15.01.2009, 14:49   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Sada Посмотреть сообщение
Делал такое несколько лет назад. Чота забыл все.
Это что! Я тут недавно тоже столкнулся с похожей проблемой, так ответ нашёл у... себя, "нескольколетназаднего" : Связи и Query.

Кстати, ловушка была в том, что в моем случае одно поле надо было квалифицировать с именем датасорса, а второе - без. Это тоже надо не забывать - для условий, включающих поля разных датасорсов.
Старый 15.01.2009, 14:54   #6  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Gustav Посмотреть сообщение
...
Кстати, ловушка была в том, что в моем случае одно поле надо было квалифицировать с именем датасорса, а второе - без. Это тоже надо не забывать - для условий, включающих поля разных датасорсов.
Или воспользоваться моим вариантом
Согласен, в таком простом случае, когда поля из одной таблицы можно обойтить и вариантом пороще, используемый Вами, но в случае кода связать нужно разные таблицы, то вариант с strFmt мне кажется предпочтительнее. А в случае, когда в квере несколько одинаковых таблиц участвует, то может оказаться и незаменимым..
__________________
Zhirenkov Vitaly
За это сообщение автора поблагодарили: Gustav (1).
Старый 15.01.2009, 16:04   #7  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
Цитата:
Сообщение от ZVV Посмотреть сообщение
...
Ну только у вас будет что-то типа
X++:
   qbr.value(strFmt('( (%1.%2 > %1.%3) )'
                    ,qbds.name()
                    ,FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesQty))
                    ,FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesPrice))
                );
2 ZVV: а зачем так длинно, с использованием 3 функций? (для данного случая когда числовые параметры tableId и fieldId получены не как произвольные неопределенные значения из вне, а вычислены тут же через tableNum() и fieldNum())
X++:
FieldId2Name(tableNum(SalesLine), fieldNum(SalesLine, SalesQty))
тот же результат будет при использовании:
X++:
fieldStr(SalesLine, SalesQty)
Пример:
X++:
static void jbTableFieldName(Args _args)
{
    ;
    info( strfmt( "fieldId2Name{SalesLine, SalesQty}: %1", fieldId2Name( tableNum(SalesLine), fieldNum(SalesLine, SalesQty ) ) ) ) ;
    info( strfmt( "fieldStr(SalesLine, SalesQty): %1", fieldStr( SalesLine, SalesQty ) ) ) ;
}
Старый 15.01.2009, 16:09   #8  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от petergunn Посмотреть сообщение
2 ZVV: а зачем так длинно, с использованием 3 функций?
Согласен, вообще я так вроде обычно и делаю, через fieldStr... Просто тогда скопировал откуда-то, в той теме, на которую ссылку давал, чтоб не набирать, не особо задумываясь... Счас скопировал оттуда ещё раз...
__________________
Zhirenkov Vitaly
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Много записей возвращает запрос CasperSKY DAX: Программирование 9 28.07.2008 09:43
EP фильтр в Web форме zelibobis DAX: Программирование 2 10.01.2008 16:59
Как собрать запрос? moid DAX: Программирование 11 02.07.2007 12:07
Вопрос про расширенный склад (про комплектацию отгрузки) slava09 DAX: Функционал 7 14.08.2006 10:24
Не работает запрос на нескольких компаниях Bega DAX: Программирование 3 16.09.2005 10:21

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

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

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