|  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? | 
|  | 
|  | 
| 
 |