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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.06.2015, 17:04   #1  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
Помогите с запросом
Запрос
A join B on A.P=B.P
join C on A.K=C.K


через Relations в один запрос

qbds = query.addDataSource(tablenum( A ));
qbds.addRange(fieldnum( A, ItemId ));

qbds = qbds.addDataSource(tablenum(B));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

qbds = qbds.addDataSource(tablenum(C));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

но С тогда Relation ищет уже с B ? а как задать, чтобы Relations были C с A ?
Старый 03.06.2015, 17:07   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,738 / 404 (17) +++++++
Регистрация: 23.03.2006
используйте разные переменные qbds
Старый 03.06.2015, 18:17   #3  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Попробуйте так:

X++:
qbdsA = query.addDataSource(tablenum(A));
qbdsA.addRange(fieldnum(A, ItemId));

qbds = qbdsA.addDataSource(tablenum(B));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

qbds = qbds.addDataSource(tablenum(C));
qbds.addLink(fieldnum(A, K), fieldnum(C, K), qbdsA.name())
qbds.fetchMode(QueryFetchMode::One2One);

Последний раз редактировалось Cardagant; 03.06.2015 в 18:19.
Старый 03.06.2015, 22:30   #4  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Цитата:
а как задать, чтобы Relations были C с A ?
X++:
qbdsA = query.addDataSource(tablenum( A ));
qbdsA.addRange(fieldnum( A, ItemId ));

qbds = qbdsA.addDataSource(tablenum(B));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);

qbds = qbdsA.addDataSource(tablenum(C));
qbds.relations(true);
qbds.fetchMode(QueryFetchMode::One2One);
Старый 03.06.2015, 23:57   #5  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Спасибо, Ivan,

Ваш вариант правда работает при
X++:
qbds.fetchMode(QueryFetchMode::One2One);

Мой вариант сработает также и при отсутствии задания типа связи 1:1.

Но вопрос был и правда о том,
Цитата:
а как задать, чтобы Relations были C с A ?
Согласен, Ваш вариант подходит лучше в данном случае
Старый 04.06.2015, 08:21   #6  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
Цитата:
Сообщение от Cardagant Посмотреть сообщение
Спасибо, Ivan,

Ваш вариант правда работает при
X++:
qbds.fetchMode(QueryFetchMode::One2One);

Мой вариант сработает также и при отсутствии задания типа связи 1:1.

Но вопрос был и правда о том,


Согласен, Ваш вариант подходит лучше в данном случае
Мне как раз и надо 1 ко многим связь. One2One можно убирать только в варианте Cardagant ?
Старый 04.06.2015, 08:45   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от trudel Посмотреть сообщение
Мне как раз и надо 1 ко многим связь. One2One можно убирать только в варианте Cardagant ?
Нет, не путайте. Свойство FetchMode не за это отвечает.
Связывание источников данных в запросах
За это сообщение автора поблагодарили: trudel (1).
Старый 04.06.2015, 08:45   #8  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
Вот согласно теории
FetchMode Это свойство присутствует только у вложенных источников данных.
Иногда используется для управления способом связывания
источников данных («один ко многим» или «один к одному»), но
обычно достаточно использования свойства JoinMode.


Я смотрю практически все FetchMode указывают в обязательном порядке. И практически везде One2One ... Но вроде зачастую связи 1 ко многим даже более частые. Например водитель A может ездить на нескольких машинах из С, это 1 ко многим, но One2One все равно срабатывает как 1 ко многим у меня. Точнее в результате Егоров Ауди
Егоров Бмв
Егоров Лада
я вижу.

Запутался с FetchMode, хотя неоднократно использовал)
Старый 04.06.2015, 08:46   #9  
trudel is offline
trudel
Участник
 
52 / 10 (1) +
Регистрация: 17.04.2015
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Нет, не путайте. Свойство FetchMode не за это отвечает.
Связывание источников данных в запросах
Спасибо! теперь все ясно.
Старый 04.06.2015, 09:46   #10  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Нет, не путайте. Свойство FetchMode не за это отвечает.
Связывание источников данных в запросах
Спасибо большое, очень полезная информация!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помогите с запросом trudel DAX: Программирование 4 03.05.2015 08:28
Помогите с запросом AvrDen DAX: Программирование 8 07.08.2007 15:24
Помогите с запросом.. DarkBear DAX: Программирование 2 15.08.2005 13:38
Помогите с SQL запросом malex DAX: Программирование 8 26.07.2005 13:43
Помогите пожалуйста с запросом... velk DAX: Программирование 18 20.10.2004 08:44
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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