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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.04.2008, 15:37   #1  
CasperSKY is offline
CasperSKY
Axapta Retail User
Аватар для CasperSKY
Axapta Retail User
 
53 / 10 (1) +
Регистрация: 22.02.2008
Не могу сформировать строку strFmt
Уважаемые аксаптеры столкнулся с проблемой отображения данных по распред центру.
Есть Descendants, тут происходить наследование ассортимента от родителя(я так понял от root)
X++:
descendants += strFmt("DESCENDANTS (%1, [Товар] , SELF )",
                         inventItemRange.getItemRangeCondition()
                         );
Далее построение запроса с наследыванием -

X++:
queryText +=
          strFmt("select ")
          + strFmt("{ %1 } on rows, ", descendants)
          + strFmt("{[Measures].[Номенклатура], [Measures].[Наименование],[Measures].[Конфигурация], ")
          + strFmt("[Measures].[Размер], [Measures].[Цвет], [Measures].[Остаток на начало], [Measures].[Остаток на конец], ")
          + strFmt("[Measures].[Закупки], [Measures].[Продажи], [Measures].[Прочее], ")
          + strFmt("[Measures].[Продажи за период1], [Measures].[Продажи за период2], [Measures].[Продажи за период3], [Measures].[Продажи за период4], [Measures].[Продажи за период5], [Measures].[Продажи за период6],")
          + strFmt("[Measures].[Производство за период2]} on columns ")
          + strFmt("from InventTrans ")
          + strFmt("where [Склады].[(%2) %1],", inventLocation.Name, inventLocation.InventLocationId);
Соответственно запрос выбирает весь асортимент (а это 21000 записей что занимает 50 минут ) , а нужно только если у записи склад РЦ, как сделать так чтобы условие where отрабатывалось верно,

inventLocation.InventLocationId - РЦ
inventLocation.Name - Распред Центр
Старый 11.04.2008, 17:08   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
А это вопрос случайно не про Retail?
Или что это вообще такое?
__________________
Zhirenkov Vitaly
Старый 11.04.2008, 17:17   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Похоже на прямой запрос в Microsoft Access
Если я правильно вопрос, то вам надо изменить вот это
X++:
strFmt("where [Склады].[(%2) %1],", inventLocation.Name, inventLocation.InventLocationId);
на

X++:
strFmt("where [Склады].[(%2) %1] = '(%3) %4',", inventLocation.Name, inventLocation.InventLocationId, "Распред Центр", "РЦ");
Старый 11.04.2008, 17:44   #4  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Помоему это запрос к ОЛАП на MDX (Multi Dimensional eXpressions). Там в where не нужно знак "=" указывать - указывается просто срез.
Вроде бы там как-то так надо делать:
X++:
"where [Склады].[Название атрибута1].&[Значение атрибута] AND [Склады].[Название атрибута2].&[Значение атрибута]"

Последний раз редактировалось _scorp_; 11.04.2008 в 18:10.
Старый 14.04.2008, 07:33   #5  
CasperSKY is offline
CasperSKY
Axapta Retail User
Аватар для CasperSKY
Axapta Retail User
 
53 / 10 (1) +
Регистрация: 22.02.2008
да Scorp прав это OLAP MDX, ща попробуем

Последний раз редактировалось CasperSKY; 14.04.2008 в 07:35.
Старый 14.04.2008, 08:34   #6  
CasperSKY is offline
CasperSKY
Axapta Retail User
Аватар для CasperSKY
Axapta Retail User
 
53 / 10 (1) +
Регистрация: 22.02.2008
Не неполучилось, вообще поидеи я же обращаюсь к измерениям, получается, что условия
where [Склады].[Все склады].[Не определена].[(РЦ) Распределительный Центр] должно хватить ... или не так ?

Последний раз редактировалось CasperSKY; 14.04.2008 в 09:35.
Старый 14.04.2008, 11:08   #7  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Ну по MDX я тоже небольшой специалист и с синтаксисом первый раз напутал. Попробуйте так:
X++:
"where ([Склады].[Название атрибута1].&[Значение атрибута], [Склады].[Название атрибута2].&[Значение атрибута])"
Смысл в чем, нужно добраться до конкретного измерения или его атрибута и после знака & указать его значение. А еще есть команда Filter(), вот ее синтаксис http://msdn2.microsoft.com/en-us/library/ms146037.aspx
Старый 17.04.2008, 09:50   #8  
CasperSKY is offline
CasperSKY
Axapta Retail User
Аватар для CasperSKY
Axapta Retail User
 
53 / 10 (1) +
Регистрация: 22.02.2008
Всё там же ... прошлое неверно .... вопрос следующий, есть запрос формирующий строки, вида:
X++:
                   inventTableModulePurch  = inventTable.inventTableModulePurch();
       while
                select
                    vendItem
                    join
                    inventTable
                        where inventTable.ItemId == vendItem.ItemId
                           && inventTable.OLAPItemName     
                    exists join
                    inventItemRangeRef
                        where inventItemRangeRef.RangeIdRef       == inventTable.ItemRangeIdRef
                           && inventItemRangeRef.RangeIdRefParent == inventItemRange.RecId
            {
              
                if(inventTableModulePurch.Blocked==NoYes::No)
                { 

                if (descendants)
                    descendants += ", ";

                descendants += strFmt("DESCENDANTS (%1.[%2 - %3], [Товар] , SELF )",    // vital 30.09.2004 SPAR
                                      InventItemRange::find(inventTable.ItemRangeId).getItemRangeCondition(),
                                      inventTable.ItemId,
                                      inventTable.OLAPItemName);
Запрос выстраивает иерархию (DESCENDANTS) по всем закупкам, необходимо ограничить данный запрос закупкам у которых склад РЦ ... чё та я на этом застрял шоппц ...
Старый 17.04.2008, 10:20   #9  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
Видимо у вас Axapta Retail?
И наверное вы хотите по тем товарам у которых флаг "Заказывается на РЦ"?
Потому что причем тут закупки - которые в запросе у вас не фигурируют - не очень понятно.
Либо добавить их в запрос и отфильтровать по полю "склад".
Старый 17.04.2008, 10:52   #10  
CasperSKY is offline
CasperSKY
Axapta Retail User
Аватар для CasperSKY
Axapta Retail User
 
53 / 10 (1) +
Регистрация: 22.02.2008
Всё пасиб разобрался
Теги
olap, документация

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не получается сформировать lookup по запросу с outer join dawl DAX: Программирование 6 05.12.2008 15:12
Не получается сформировать рендж с помощью strFmt Dronas DAX: Программирование 18 14.04.2008 14:08
Узнать строку и столбец именованной области в Excel player DAX: Программирование 6 01.02.2008 07:33
передать строку в ActiveX Eldar9x DAX: Программирование 1 13.08.2007 15:23
функция аналогичная strfmt ivas DAX: Программирование 10 27.12.2005 13:20

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

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

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