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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2017, 21:54   #1  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Как прицепить несколько джоинов к одному датасорсу в динамическом запросе?
Добрый день всем. Что-то голова не варит уже... Объясните пожалуйста, почему нельзя к одному датасорсу подсоединить несколько других. Пытаюсь через OuterJoin взять информацию о клиенте. Версия AX4.
X++:
    Query                   q = new SysQuery();
    QueryBuildDataSource    qbdsCustTable = q.addDataSource(tablenum(CustTable));
    QueryBuildDataSource    qbds;
    ;

    qbds = qbdsCustTable.addDataSource(tablenum(CustTable_APM));
    qbds.joinMode(JoinMode::OuterJoin);
    qbds.fetchMode(QueryFetchMode::One2Many);
    qbds.relations(true);

    qbds = qbdsCustTable.addDataSource(tablenum(CustTable_ACM));
    qbds.joinMode(JoinMode::OuterJoin);
    qbds.fetchMode(QueryFetchMode::One2Many);
    qbds.relations(true);

    info(q.dataSourceNo(1).toString());
Инфолог выдаёт только: SELECT * FROM CustTable.
Если оставить соединение только с одной таблицей, все отрабатывает замечательно.
И почему запрос подобной сложности отрабатывает к примеру в SysSecurityFormSetup.buildSecurityIdMenuAccessQuery(), где на один DS накидывают OuterJoin и ExistsJoin? См. переменную accessRightsListDataSource:
X++:
    securityFormDataSource = accessRightsListDataSource.addDataSource(tablenum(SysSecurityFormTable));
    securityFormDataSource.joinMode(JoinMode::OuterJoin);
    securityFormDataSource.fetchMode(QueryFetchMode::One2Many);
    securityFormDataSource.relations(true);

    queryBuildRange = securityFormDataSource.addRange(fieldnum(SysSecurityFormTable, FormName));
    queryBuildRange.value(_formName);

    queryBuildDataSource = accessRightsListDataSource.addDataSource(tablenum(UserGroupList));
    queryBuildDataSource.joinMode(JoinMode::ExistsJoin);
    queryBuildDataSource.fetchMode(QueryFetchMode::One2One);
    queryBuildDataSource.addLink(fieldnum(AccessRightsList, GroupId), fieldnum(UserGroupList, GroupId));
__________________
// no comments
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Несколько предоплат поставщику mnt_dx DAX: Функционал 12 25.09.2017 23:11
Несколько источников для QueryBuildDataSource syl DAX: Программирование 7 03.09.2015 17:59
Несколько отчетов в одном вьювере IKA DAX: Программирование 3 20.08.2013 16:17
Как в динамическом запросе использовать исловие OR между двумя полями? yooshi DAX: Программирование 12 07.08.2009 16:34
Несколько outer join в запросе _scorp_ DAX: Программирование 2 11.04.2008 10:56

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

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

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