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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2010, 12:20   #1  
Skvorcal is offline
Skvorcal
Участник
 
36 / 10 (1) +
Регистрация: 16.08.2010
QueryRun, аналогичный select'у
Коллеги, всем привет.
Столкнулся с маленькой проблемкой, надеюсь получить помощь в ее решении.

Есть исходный запрос X++

X++:
    select sum(AmountMST) from ledgerTrans
        where ledgerTrans.AccountNum   == "68.000"
           && ledgerTrans.TransDate    >= 01\01\2010
           && ledgerTrans.TransDate    <= 31\03\2010
        join tableId from ledgerTransOffset
            where ledgerTransOffset.BondBatch_RU        == ledgerTrans.BondBatch_RU
               && ledgerTransOffset.BondBatchTrans_RU   == ledgerTrans.BondBatchTrans_RU
               && ledgerTransOffset.Crediting           != ledgerTrans.Crediting
               && ledgerTransOffset.AccountNum          == "19.320";
Подскажите, плиз, как его реализовать с помощью QueryRun. Трудность вызывает определение связи между двумя таблицами, а конкретнее строчка ledgerTransOffset.Crediting != ledgerTrans.Crediting.
Старый 16.08.2010, 12:23   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
См. класс RLedgerSheetEngine, метод query.

И еще Связи и Query

Последний раз редактировалось Gustav; 16.08.2010 в 12:25.
За это сообщение автора поблагодарили: Skvorcal (1).
Старый 16.08.2010, 12:46   #4  
Skvorcal is offline
Skvorcal
Участник
 
36 / 10 (1) +
Регистрация: 16.08.2010
Цитата:
Сообщение от Gustav Посмотреть сообщение
См. класс RLedgerSheetEngine, метод query.

И еще Связи и Query
Хм, связи "==" реализуются посредством addLink, а все прочие связи - посредством "addRange".

Если я все правильно понял, то получается как-то вот так?

X++:
    query   = new Query();
    qbds    = query.addDataSource(tableNum(LedgerTrans));
    qbds.orderMode(OrderMode::GroupBy);

    qbds.addSelectionField(fieldNum(LedgerTrans, AmountMST), SelectionField::Sum);

    qbr = qbds.addRange(fieldNum(LedgerTrans, AccountNum));
    qbr.value("68.000");

    qbr = qbds.addRange(fieldNum(LedgerTrans, TransDate));
    qbr.value(SysQuery::range(01\01\2010, 31\03\2010));

    qbdsOffset = qbds.addDataSource(tableNum(LedgerTrans));
    qbdsOffset.addSelectionField(fieldNum(LedgerTrans, tableId));
    qbdsOffset.joinMode(JoinMode::INNERJOIN);
    qbdsOffset.relations(false);
    qbdsOffset.addLink(fieldnum(LedgerTrans, BondBatch_RU), fieldnum(LedgerTrans, BondBatch_RU));
    qbdsOffset.addLink(fieldnum(LedgerTrans, BondBatchTrans_RU), fieldnum(LedgerTrans, BondBatchTrans_RU));

    qbr = qbdsOffset.addRange(fieldNum(LedgerTrans, Crediting));
    qbr.value('(' + fieldStr(LedgerTrans, Crediting) + '!=' + qbds.name() + '.' + fieldStr(LedgerTrans, Crediting) +')');

    qbr = qbdsOffset.addRange(fieldNum(LedgerTrans, AccountNum));
    qbr.value("19.320");

    queryRun = new QueryRun(query);
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
2 while select или join? _scorp_ DAX: Программирование 9 23.01.2009 16:02
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43

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

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

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