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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.06.2004, 17:51   #1  
Sirius is offline
Sirius
Участник
 
151 / 10 (1) +
Регистрация: 10.01.2004
Адрес: Новосибирск
? Как установить связь такого вида?
Есть query.

У него 4 датасорса InventTable, InventDimCombination, InventDim, InventSum

InventDimCombination связан с InventTable по ItemId

InventDim связан с InventDimCombination по полям InventColorId и InventSizeId

InventSum связан с InventDim по InventDimId

а еще его хочется связать с InventTable по полю ItemId

просто while select работает отлично, а вот в query переложить никак не могу.

пробовал связать через addDynaLink - не выходит, причем вроде запрос получается верный, но данные не выбираются

ниже привожу код.. первый через while select - все работает; второй через query нет

помогите пожалуйста, а?

PHP код:

while select ItemIdItemName from InventTable
        group by ItemId
ItemName
    join InventSizeId
InventColorId from InventDimCombination
        group by InventSizeId
InventColorId
        where   InventTable
.ItemId==InventDimCombination.ItemId &&
                
InventDimCombination.InventSizeId!=""
    
join InventDimIdwMSLocationId from InventDim group by InventDimIdwMSLocationId
        where   InventDim
.InventColorId == InventDimCombination.InventColorId &&
                
InventDim.InventSizeId == InventDimCombination.InventSizeId &&
                
InventDim.InventLocationId=="??" &&
                
InventDim.wMSLocationId=="00.01.1.1"
    
join AvailPhysical from InventSum group by AvailPhysical
        where   InventSum
.InventDimId == InventDim.inventDimId &&
                
InventSum.ItemId == InventTable.ItemId &&
                
InventSum.AvailPhysical 0


    
{
        print 
InventTable.ItemId+" "+InventTable.ItemName+" "+InventDim.wMSLocationId;
    } 

а это через query (метод инит на отчете, где этот квери используется переопределил)

PHP код:

public void init()
{
    
InventTable             inventTable;
    
InventDimCombination    inventDimCombination;
    
InventDim               inventDim;
    
InventSum               inventSum;

    
Query                   q;
    
QueryRun                qr;
    
QueryBuildDataSource    inventTableDS;
    
QueryBuildDataSource    inventDimCombinationDS;
    
QueryBuildDataSource    inventDimDS;
    
QueryBuildDataSource    inventSumDS;
    
DictRelation            relation;

    
QueryBuildRange         qbr;
    ;

    
super();

    
this.query();

    
inventTableDS q.dataSourceTable(tablenum(InventTable));
    
inventDimCombinationDS q.dataSourceTable(tablenum(InventDimCombination));
    
inventDimDS q.dataSourceTable(tablenum(InventDim));
    
inventSumDS q.dataSourceTable(tablenum(inventSum));

    
inventTableDS.orderMode(OrderMode::GroupBy);
    
inventTableDS.addSelectionField(fieldnum(InventTableItemId));
    
inventTableDS.addSelectionField(fieldnum(InventTableitemName));

    
inventTableDS.addSortField(fieldnum(InventTableItemId));
    
inventTableDS.addSortField(fieldnum(InventTableitemName));

    
inventDimCombinationDS.orderMode(OrderMode::GroupBy);
    
inventDimCombinationDS.addSelectionField(fieldnum(InventDimCombinationInventSizeId));
    
inventDimCombinationDS.addSelectionField(fieldnum(InventDimCombinationInventColorId));

    
inventDimCombinationDS.addSortField(fieldnum(InventDimCombinationInventSizeId));
    
inventDimCombinationDS.addSortField(fieldnum(InventDimCombinationInventColorId));

    
inventDimCombinationDS.addLink(fieldnum(InventTableItemId), fieldnum(InventDimCombinationItemId));

    
qbr inventDimCombinationDS.findRange(fieldnum(InventDimCombinationInventSizeId));
    if(!
qbr)
        
qbr inventDimCombinationDS.addRange(fieldnum(InventDimCombinationInventSizeId));
    
qbr.value("!\"\"");

    
inventDimDS.orderMode(OrderMode::GroupBy);

    
inventDimDS.addSelectionField(fieldnum(InventDimInventDimId));
    
inventDimDS.addSelectionField(fieldnum(InventDimwMSLocationId));

    
inventDimDS.addSortField(fieldnum(InventDimInventDimId));
    
inventDimDS.addSortField(fieldnum(InventDimwMSLocationId));

    
inventDimDS.addLink(fieldnum(InventDimCombinationInventColorId), fieldnum(InventDimInventColorId));
    
inventDimDS.addLink(fieldnum(InventDimCombinationInventSizeId), fieldnum(InventDimInventSizeId));

    
qbr inventDimDS.findRange(fieldnum(InventDimInventLocationId));
    if(!
qbr)
        
qbr inventDimDS.addRange(fieldnum(InventDimInventLocationId));
    
qbr.value("??");

    
qbr inventDimDS.findRange(fieldnum(InventDimwMSLocationId));
    if(!
qbr)
        
qbr inventDimDS.addRange(fieldnum(InventDimwMSLocationId));
    
qbr.value("!\"\"");

    
inventSumDS.orderMode(OrderMode::GroupBy);

    
inventSumDS.addSelectionField(fieldnum(InventSum,AvailPhysical));
    
inventSumDS.addSortField(fieldnum(InventSum,AvailPhysical));

    
inventSumDS.addSelectionField(fieldnum(InventSum,ItemId));
    
inventSumDS.addSortField(fieldnum(InventSum,ItemId));

    
inventSumDS.addDynaLink(fieldnum(InventSumItemId), InventTablefieldnum(InventTableItemId));
    
inventSumDS.addLink(fieldnum(InventDiminventDimId), fieldnum(InventSuminventDimId));

    
inventSumDS.addRange(fieldnum(InventSumAvailPhysical)).value(strfmt("(%1)>0"fieldstr(InventSumAvailPhysical)));

    print 
"test";

Старый 04.06.2004, 06:39   #2  
Sirius is offline
Sirius
Участник
 
151 / 10 (1) +
Регистрация: 10.01.2004
Адрес: Новосибирск
отвечу сам себе.
нужно просто хитрый range повесить

PHP код:
inventSumDS.addRange(fieldnum(InventSumItemId)).value(strfmt("(%1) = %2.%3"fieldstr(InventSumItemId), 
inventTableDS.name(), fieldstr(InventTableItemId))); 
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Установить курсор на форме Eldar9x DAX: Программирование 2 19.04.2007 14:18
Как правильно установить связь между двумя записями в InventDim Sirius DAX: Программирование 0 25.05.2004 16:50
Связь двух таблиц daemon DAX: Программирование 10 20.11.2003 16:32
Установить время файла? SnowMan DAX: Программирование 5 01.10.2003 14:42
Динамическая связь Query с временной таблицей rumpleteazer DAX: Программирование 1 30.01.2003 01:49

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

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

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