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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2010, 16:10   #1  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Вопрос об addDataSource, и JoinMode
Здравия всем.

Есть таблица, к примеру, Table 1, которая содержит по три записи на каждый незаблокированный для закупок артикул. Необходимо выбрать из InventTable те записи, для которых записей в Table1 нет.
Как добавить qdbsTable1?
Вот что уже есть:
X++:
    qbdsInventTable = q.addDataSource(tableNum(InventTable));
    qbdsInventTableModule = qbdsInventTable.addDataSource(tableNum(InventTableModule));
    qbdsInventTableModule.joinMode(JoinMode::INNERJOIN);
    qbdsInventTableModule.relations(true);
    
    qbdsInventTableModule.addRange(fieldnum(InventTableModule, ModuleType)).value(queryValue(ModuleInventPurchSales::Purch));
    qbdsInventTableModule.addRange(fieldNum(InventTableModule, Blocked)).value(queryValue(NoYes::No));

    qbdsTable1 = qbdsInventTable.addDataSource(tableNum(Table1));
    qbdsTable1.relations(true);
    qbdsTable1.joinMode(JoinMode::NoExistsJoin);
    qbdsTable1.addLink(fieldnum(InventTable, ItemId),fieldnum(Table1,ItemId));
Возвращются все записи из InventTable.

Последний раз редактировалось Prophetic; 06.10.2010 в 16:16.
Старый 06.10.2010, 16:37   #2  
tricky is offline
tricky
Участник
 
140 / 64 (3) ++++
Регистрация: 03.05.2005
Адрес: Гуково
Попробуйте "прикрепить" Table1 не к InventTable, а к InventTableModule.

А лучше перестроить запрос в таком порядке:
InventTableModule --InnerJoin--> InventTable --NoExistsJoin-->Table1.
За это сообщение автора поблагодарили: Prophetic (1).
Старый 06.10.2010, 16:51   #3  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Благодарю.
Вот это сработало:
Цитата:
Сообщение от tricky Посмотреть сообщение
Попробуйте "прикрепить" Table1 не к InventTable, а к InventTableModule.
Старый 06.10.2010, 17:24   #4  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Еще вариант:
X++:
qbdsTable1.FetchMode(0)
PS: 0 - это 1:1
А на будущее: стройте свой запрос не программно, а в ветке Queries в AOT.
Старый 07.10.2010, 08:31   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Еще вариант:
X++:
qbdsTable1.FetchMode(0)
PS: 0 - это 1:1
А чтобы не запоминать константы, можно нужно пользоваться перечислением QueryFetchMode::One2One

Также, см.:
AOT\Reports\tutorial_Joins
AOT\Reports\tutorial_JoinsExtended
За это сообщение автора поблагодарили: Raven Melancholic (2).
Старый 07.10.2010, 10:15   #6  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А чтобы не запоминать константы, можно нужно пользоваться перечислением QueryFetchMode::One2One
Действительно, все время забываю как это перечисление называется. Если с RangeStatus, SortOrder все логично - они являются системными, то почему-то для FetchMode, несмотря на то, что такие данные используются в AOT, перечисление не системное.
Теги
query

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Очередной вопрос про Query rkrivov DAX: Программирование 45 16.10.2013 19:16
Вопрос про Outer Join Silphidae DAX: Программирование 13 05.12.2008 16:28
Вопрос к знатокам алгоритма периодического сопоставления ATimTim DAX: Программирование 14 15.02.2007 12:36
Вопрос по Query с агрегатной функцией Jarad DAX: Программирование 11 31.10.2006 21:10
Вопрос по запросу (query) Александр_1975 DAX: Программирование 2 23.01.2004 17:35

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

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

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