|
20.01.2009, 12:50 | #1 |
Участник
|
Простой 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 |
Боец
|
Вроде все должно работать на первый взгляд...
Посмотрите, правильный ли запрос строится: X++: info(qbdsInventTrans.toString()); |
|
20.01.2009, 13:11 | #3 |
Участник
|
Да запрос то правильный выходит, но пустой.
Цитата:
SELECT * FROM InventTrans WHERE ((ItemId = 00-808-MS)) EXISTS JOIN * FROM InventJournalTable WHERE InventTrans.TransRefId = InventJournalTable.JournalId
Можете у себя запустить, будет тоже самое. Ax 3.0 sp4
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
20.01.2009, 13:20 | #4 |
Боец
|
Ну, если запрос правильный, значит, возможно, нет записей подходящих под него...
Попробуйте для начала убрать рэнж по ItemId, может в нем проблема... А в цикл он заходит? может просто sum(Qty) = 0 ?! Последний раз редактировалось DSPIC; 20.01.2009 в 13:23. |
|
20.01.2009, 13:24 | #5 |
Участник
|
Да range я поставил чтоб быстрее запрос отрабатывал.
Можете его вообще убрать всё останется так же. Говорю же дело в том что EDT разные, хоть длина и совпадает, но этот факт оказывает такое воздействие.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
20.01.2009, 13:41 | #6 |
Участник
|
|
|
20.01.2009, 13:46 | #7 |
Участник
|
У меня тоже одинаковая длина и там и там 30 символов но не отрабатывает.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
20.01.2009, 13:54 | #8 |
Участник
|
А какая версия Axapt-ы?
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
20.01.2009, 14:17 | #9 |
Участник
|
|
|
20.01.2009, 13:32 | #10 |
Участник
|
У EDT этих полей правое выравнивание, но РАЗНАЯ длина (20 и 10 символов соответственно)
Отсюда и проблема. UPD. Если конечно сами типы не меняли. Проверил на дефолте.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. Последний раз редактировалось Weez; 20.01.2009 в 13:34. |
|
20.01.2009, 13:46 | #11 |
Участник
|
Цитата:
У меня и там и там 30 символов.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
20.01.2009, 13:32 | #12 |
Боец
|
А млин, понял...
На всякий случай, если тупой не только я: Таблицы не джойнятся, т.к. поля, по которым идет связка этих таблиц, имеют разную длину.... |
|
20.01.2009, 13:59 | #13 |
NavAx
|
а добавить InventJournalTrans религия не позволяет.
по стандару выравнивание разное у TransRefId и JournalId. ps Помогите разобраться с QueryBuildDataSource Последний раз редактировалось raz; 20.01.2009 в 14:04. |
|
|
За это сообщение автора поблагодарили: miklenew (3). |
20.01.2009, 14:15 | #14 |
Участник
|
Цитата:
Выравнивание пробовал делать одинаковое не помогло. Спасибо. Интересная ссылка. Решил по другому сделать.
__________________
Энергия молодых и неравнодушных способна изменить мир к лучшему. |
|
Теги |
queryrun, программно |
|
|