07.04.2006, 12:59 | #1 |
Участник
|
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()); } подскажите пожалуйста в чем тут дело? (причем если закомертировать одно из ограничений - все в порядке) |
|
07.04.2006, 13:01 | #2 |
NavAx
|
попробуйте датасорс с notexist цеплять первым.
еще для примера http://www.axforum.info/forums/showthread.php?t=8357 Последний раз редактировалось raz; 07.04.2006 в 13:03. |
|
07.04.2006, 13:03 | #3 |
Участник
|
Спасибо за ответ, но результат тот же.
Up! |
|
07.04.2006, 13:09 | #4 |
NavAx
|
Предлагаю присоединить BOM к InventTableModule
вот так: PHP код:
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 |
Модератор
|
А зачем там много 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 |
Участник
|
Коллеги, большое спасибо за идеи.
теперь все работает |
|
07.04.2006, 13:39 | #7 |
NavAx
|
Цитата:
Сообщение от if_maks
Коллеги, большое спасибо за идеи.
теперь все работает
__________________
Isn't it nice when things just work? |
|
|
|