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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2009, 12:50   #1  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Простой QueryRun не работает
Такой вопрос возник.
Есть таблица своя. Пытаюсь к ней join inventJournalTable сделать не выходит.
Не выходит так как разные EDT.
Для примера привожу джобик свою таблицу заменил на InventTrans.
X++:
static void Job28(Args _args)
{
    InventTrans                  inventTrans;
    Query                        query;
    QueryBuildDataSource         qbdsInventTrans;
    QueryBuildDataSource         qbdsInventJournalTable;
    QueryRun                     queryRun;
    Qty                          qty;
;
    query = new Query();
    qbdsInventTrans = query.addDataSource(tablenum(InventTrans));
    qbdsInventTrans.addRange(fieldnum(InventTrans, ItemId)).value('00-808-MS');

    qbdsInventJournalTable = qbdsInventTrans.addDataSource(tablenum(InventJournalTable));
    qbdsInventJournalTable.relations(false);
    qbdsInventJournalTable.joinMode(JoinMode::ExistsJoin);

    qbdsInventJournalTable.addLink(fieldnum(InventTrans,TransRefId),fieldnum(InventJournalTable,JournalId));

    queryRun = new QueryRun(query);
    //info(query.dataSourceNo(1).toString());
    while (queryRun.next())
    {
        inventTrans = queryRun.get(tablenum(InventTrans));
        qty += inventTrans.Qty;
    }
    info(int2str(qty));
}
Вопрос: Можно ли что-то с этим сделать.(Без изменения таблицы).
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 13:04   #2  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Вроде все должно работать на первый взгляд...
Посмотрите, правильный ли запрос строится:
X++:
info(qbdsInventTrans.toString());
Старый 20.01.2009, 13:11   #3  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Да запрос то правильный выходит, но пустой.
Цитата:
SELECT * FROM InventTrans WHERE ((ItemId = 00-808-MS)) EXISTS JOIN * FROM InventJournalTable WHERE InventTrans.TransRefId = InventJournalTable.JournalId
Я специально таблицу поменял свою на InventTrans, чтоб можно было попробовать.
Можете у себя запустить, будет тоже самое.
Ax 3.0 sp4
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 13:20   #4  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Ну, если запрос правильный, значит, возможно, нет записей подходящих под него...
Попробуйте для начала убрать рэнж по ItemId, может в нем проблема...

А в цикл он заходит? может просто sum(Qty) = 0 ?!

Последний раз редактировалось DSPIC; 20.01.2009 в 13:23.
Старый 20.01.2009, 13:24   #5  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Да range я поставил чтоб быстрее запрос отрабатывал.
Можете его вообще убрать всё останется так же.
Говорю же дело в том что EDT разные, хоть длина и совпадает, но этот факт оказывает такое воздействие.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 13:32   #6  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
У EDT этих полей правое выравнивание, но РАЗНАЯ длина (20 и 10 символов соответственно)
Отсюда и проблема.
UPD. Если конечно сами типы не меняли. Проверил на дефолте.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.

Последний раз редактировалось Weez; 20.01.2009 в 13:34.
Старый 20.01.2009, 13:32   #7  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
А млин, понял...
На всякий случай, если тупой не только я:
Таблицы не джойнятся, т.к. поля, по которым идет связка этих таблиц, имеют разную длину....
Старый 20.01.2009, 13:41   #8  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от miklenew Посмотреть сообщение
Говорю же дело в том что EDT разные, хоть длина и совпадает.
При выставлении одинаковой длины job у меня отрабатывает.
Старый 20.01.2009, 13:46   #9  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
При выставлении одинаковой длины job у меня отрабатывает.
У меня тоже одинаковая длина и там и там 30 символов но не отрабатывает.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 13:46   #10  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Weez Посмотреть сообщение
У EDT этих полей правое выравнивание, но РАЗНАЯ длина (20 и 10 символов соответственно)
Сорри не посмотрел что на стандарте.
У меня и там и там 30 символов.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 13:54   #11  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
При выставлении одинаковой длины job у меня отрабатывает.
А какая версия Axapt-ы?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 13:59   #12  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
а добавить InventJournalTrans религия не позволяет.
по стандару выравнивание разное у TransRefId и JournalId.

ps
Помогите разобраться с QueryBuildDataSource

Последний раз редактировалось raz; 20.01.2009 в 14:04.
За это сообщение автора поблагодарили: miklenew (3).
Старый 20.01.2009, 14:15   #13  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от raz Посмотреть сообщение
а добавить InventJournalTrans религия не позволяет.
по стандару выравнивание разное у TransRefId и JournalId.
У меня лота нет в этой таблице.
Выравнивание пробовал делать одинаковое не помогло.
Цитата:
Спасибо. Интересная ссылка.
Решил по другому сделать.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему.
Старый 20.01.2009, 14:17   #14  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
Сообщение от miklenew Посмотреть сообщение
А какая версия Axapt-ы?
На Ax 3.0 к сожалению сейчас проверить не могу. Проверял на Ax 2009.
Теги
queryrun, программно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
как работает QueryRun.reset() ??? 6apcyk DAX: Программирование 1 08.10.2005 22:10
Как же все-таки организованиы Query и QueryRun? VIS DAX: Программирование 4 03.07.2003 15:22
Проблема: подстановка значений по дефолту в диалог QueryRun cyrus DAX: Программирование 4 21.03.2003 09:39

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

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

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