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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.04.2015, 16:10   #1  
Music is offline
Music
Участник
 
33 / 10 (1) +
Регистрация: 01.07.2014
? QUERY - как присоединить одну таблицу к запросу несколько раз?
Коллеги, прошу вашей помощи.

Делаю запрос на таблице HcmPersonSkill
К полям Certifier и RatingLevelExaminer через запрос пытаюсь привязать PersonalNumber соответствующих Wokers, но в итоге оба раза выводится один и тот же PersonalNumber.

Где ошибка?

X++:
    HcmPersonSkill          personSkill;   
    HcmWorker               workerCertifier, workerRatingLevelExaminer;

    QueryRun queryRun;
    Query ret = new Query();
    QueryBuildDataSource  qbdsPersonSkill, qbdsWorkerCertifier, qbdsWorkerRatingLevelExaminer;


    qbdsPersonSkill            = ret.addDataSource(tableNum(HcmPersonSkill));
    
    qbdsWorkerCertifier       = qbdsPersonSkill.addDataSource(tableNum(HcmWorker));
    qbdsWorkerCertifier.clearLinks();
    qbdsWorkerCertifier.addLink(fieldNum(HcmPersonSkill, Certifier), fieldNum(HcmWorker, RecId));
    qbdsWorkerCertifier.joinMode(JoinMode::OuterJoin);
    qbdsWorkerCertifier.fetchMode(QueryFetchMode::One2One);

    qbdsWorkerRatingLevelExaminer       = qbdsPersonSkill.addDataSource(tableNum(HcmWorker));
    qbdsWorkerRatingLevelExaminer.clearLinks();
    qbdsWorkerRatingLevelExaminer.addLink(fieldNum(HcmPersonSkill, RatingLevelExaminer), fieldNum(HcmWorker, RecId));
    qbdsWorkerRatingLevelExaminer.joinMode(JoinMode::OuterJoin);
    qbdsWorkerRatingLevelExaminer.fetchMode(QueryFetchMode::One2One);

Последний раз редактировалось Music; 02.04.2015 в 16:18.
Старый 02.04.2015, 17:02   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,689 / 405 (17) +++++++
Регистрация: 23.03.2006
QueryRun.get() второй параметр, в котором указать номер по счету датасорса
Старый 02.04.2015, 18:07   #3  
Music is offline
Music
Участник
 
33 / 10 (1) +
Регистрация: 01.07.2014
Цитата:
Сообщение от ice Посмотреть сообщение
QueryRun.get() второй параметр, в котором указать номер по счету датасорса
Можете уточнить, что вы имеете в виду?

У меня так:
X++:
        workerCertifier            = queryRun.get(TableNum(HcmWorker));
        workerRatingLevelExaminer  = queryRun.get(TableNum(HcmWorker));
Старый 02.04.2015, 19:10   #4  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от Music Посмотреть сообщение
Можете уточнить, что вы имеете в виду?
У меня так:
а должно быть так:
X++:
        workerCertifier            = queryRun.get(tableNum(HcmWorker), 1);
        workerRatingLevelExaminer  = queryRun.get(tableNum(HcmWorker), 2);
__________________
Кононов Пётр
Старый 02.04.2015, 19:10   #5  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Music Посмотреть сообщение
Можете уточнить, что вы имеете в виду?

У меня так:
X++:
        workerCertifier            = queryRun.get(TableNum(HcmWorker));
        workerRatingLevelExaminer  = queryRun.get(TableNum(HcmWorker));
public Common get(tableId table, [int occurrence])

occurrence - The data source to be addressed; optional. The number of the data source with the given table; 1-based. If more than one data source has the same table assigned to it, this (optional) parameter can be used to specify which one is to be addressed. It specifies the number of the data source with the given table. Thus, if the CustTable table is assigned to two data sources, and the second data source is required, this argument should have the value 2.

https://msdn.microsoft.com/en-us/lib...(v=ax.50).aspx

Отсюда имеем :

X++:
        workerCertifier            = queryRun.get(TableNum(HcmWorker, 1));
        workerRatingLevelExaminer  = queryRun.get(TableNum(HcmWorker, 2));

Вот как-то так
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 02.04.2015 в 19:14.
За это сообщение автора поблагодарили: axotnik88 (1).
Старый 03.04.2015, 12:11   #6  
Music is offline
Music
Участник
 
33 / 10 (1) +
Регистрация: 01.07.2014
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
а должно быть так:
X++:
        workerCertifier            = queryRun.get(tableNum(HcmWorker), 1);
        workerRatingLevelExaminer  = queryRun.get(tableNum(HcmWorker), 2);
Все гениальное снова оказалось простым
Спасибо всем за помощь и участие!!!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Microsoft Dynamics AX general performance analysis scripts page 5 Blog bot DAX Blogs 0 01.09.2014 14:11
соединить query и временную таблицу kitty DAX: Программирование 29 04.05.2012 09:35
Динамическое изменение прав доступа на одну таблицу DreamCreator DAX: Программирование 7 15.07.2009 16:31
Два DataSource на одну временную таблицу mou DAX: Программирование 4 22.03.2008 11:00

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

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

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