02.04.2015, 16:10 | #1 |
Участник
|
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 |
Участник
|
QueryRun.get() второй параметр, в котором указать номер по счету датасорса
|
|
02.04.2015, 18:07 | #3 |
Участник
|
|
|
02.04.2015, 19:10 | #4 |
Молодой, подающий надежды
|
а должно быть так:
X++: workerCertifier = queryRun.get(tableNum(HcmWorker), 1); workerRatingLevelExaminer = queryRun.get(tableNum(HcmWorker), 2);
__________________
Кононов Пётр |
|
02.04.2015, 19:10 | #5 |
Сенбернар
|
Цитата:
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 |
Участник
|
|
|