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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.04.2006, 12:59   #1  
if_maks is offline
if_maks
Участник
 
226 / 15 (1) ++
Регистрация: 26.08.2003
? QueryBuildDataSource - динамически
Всем добрый день!
Задача состоит в том, что бы выбрать все ном. единицы (InventTable), которых нет в строках спецификаций (BOM) и которые не заблокированны для продажи (InventTableModule)
код:
Код:
static void QueryBuildDataSource(Args _args)
{
    Query                   q = new Query();
    QueryBuildDataSource    qbdsInventTable;
    QueryBuildDataSource    qbdsBOM;
    QueryBuildDataSource    qbdsInventTableModule;
    ;
    qbdsInventTable = q.addDataSource(tableNum(InventTable));

    // Ограничение №1 -->
    qbdsInventTableModule = qbdsInventTable.addDataSource(tableNum(InventTableModule));
    qbdsInventTableModule.joinMode(JoinMode::INNERJOIN);
    qbdsInventTableModule.relations(true);
    qbdsInventTableModule.addRange(fieldnum(InventTableModule, ModuleType)).value(queryValue(ModuleInventPurchSales::Sales));
    // Ограничение №1 <--

    // Ограничение №2 -->
    qbdsBOM = qbdsInventTable.addDataSource(tablenum(BOM));
    qbdsBOM.joinMode(JoinMode::NOEXISTSJOIN);
    qbdsBOM.relations(true);
    // Ограничение №2 <--

    info(qbdsInventTable.toString());
}
в результате получается следующий запрос: "SELECT * FROM InventTable"
подскажите пожалуйста в чем тут дело?
(причем если закомертировать одно из ограничений - все в порядке)
Старый 07.04.2006, 13:01   #2  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
попробуйте датасорс с notexist цеплять первым.

еще для примера http://www.axforum.info/forums/showthread.php?t=8357

Последний раз редактировалось raz; 07.04.2006 в 13:03.
Старый 07.04.2006, 13:03   #3  
if_maks is offline
if_maks
Участник
 
226 / 15 (1) ++
Регистрация: 26.08.2003
Спасибо за ответ, но результат тот же.
Up!
Старый 07.04.2006, 13:09   #4  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Lightbulb
Предлагаю присоединить BOM к InventTableModule
вот так:

PHP код:
    // Ограничение №2 -->
    
qbdsBOM qbdsInventTableModule.addDataSource(tablenum(BOM));
    
qbdsBOM.joinMode(JoinMode::NOEXISTSJOIN);
    
qbdsBOM.addlink(fieldnum(InventTableModuleitemid), fieldnum(BOMitemid));
    
qbdsBOM.relations(true);
    
// Ограничение №2 <-- 
тогда запрос получается такой:

SELECT * FROM InventTable JOIN * FROM InventTableModule WHERE InventTable.ItemId = InventTableModule.ItemId AND ((ModuleType = Заказ)) NOTEXISTS JOIN * FROM BOM WHERE InventTableModule.ItemId = BOM.ItemId
Старый 07.04.2006, 13:12   #5  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
А зачем там много QueryBuildDataSource?
X++:
    Query                   q = new Query();
    QueryBuildDataSource    qbds;
    ;
    qbds = q.addDataSource(tableNum(InventTable));

    qbds = qbds.addDataSource(tableNum(InventTableModule));
    qbds.joinMode(JoinMode::INNERJOIN);
    qbds.relations(true);
    qbds.addRange(fieldnum(InventTableModule, ModuleType)).value(queryValue(ModuleInventPurchSales::Sales));
    qbds.addDataSource(tablenum(BOM));
    qbds.addLink(fieldnum(InventTable, itemId),fieldnum(BomTable, BomId));
    qbds.joinMode(JoinMode::NOEXISTSJOIN);

    info(qbds.toString());
Старый 07.04.2006, 13:35   #6  
if_maks is offline
if_maks
Участник
 
226 / 15 (1) ++
Регистрация: 26.08.2003
Коллеги, большое спасибо за идеи.
теперь все работает
Старый 07.04.2006, 13:39   #7  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от if_maks
Коллеги, большое спасибо за идеи.
теперь все работает
Оно и так работало, просто разбивало на 3 отдельных запроса
__________________
Isn't it nice when things just work?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Непонятное поведение векторных полей в QueryBuildDataSource. Lemming DAX: Программирование 2 12.05.2005 17:43
Вопрос по QueryBuildDataSource, QueryBuildRange и QueryRun Paul_ST DAX: Программирование 9 11.02.2004 17:13
Как получить значение поля Datasource на динамически созданной форме? storer DAX: Программирование 2 14.11.2003 16:41
Помогите разобраться с QueryBuildDataSource raz DAX: Программирование 10 04.09.2003 12:03
Возможно ли перекрыть событие динамически? art DAX: Программирование 21 13.02.2003 16:08
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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