|  29.03.2007, 11:00 | #1 | 
| Участник | query 
			
			Пишу код: X++: query.addDataSource(tableNum(ProdTable)); qbs = query.dataSourceTable( tableNum(ProdTable) ); query.addDataSource(tableNum(SalesTable)); qbs = query.dataSourceTable( tableNum(SalesTable) ); if( SalesEditFilter.valueStr() ) { qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr()); } qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId )); 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  29.03.2007, 11:12 | #2 | 
| Программатор | 
			
			Честно говоря ломает напрягать свои телепатические способности... Чё за ошибка то???
		 | 
|  | 
|  29.03.2007, 11:13 | #3 | 
| Программатор | X++: qbs = query.addDataSource( tableNum(ProdTable) ); qbs = qbs.AddDataSource( tableNum(SalesTable) ); if( SalesEditFilter.valueStr() ) { qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr()); } qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId )); Последний раз редактировалось Sada; 29.03.2007 в 11:23. Причина: косячокс | 
|  | 
|  29.03.2007, 11:21 | #4 | 
| Участник | 
			
			Ошибка в том, что второй источник нужно добавлять дочерним к первому. А вы их оба добавляете к запросу на одном уровне.  X++: qbs = qbs.addDataSource(tableNum(SalesTable)); | 
|  | 
|  29.03.2007, 11:44 | #5 | 
| Участник | 
			
			пишу в executeQuery() следущее: X++: qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(SalesTable)); qbs.addLink(fieldNum( SalesTable, SalesId ), fieldNum( ProdTable, InventRefId )); if( SalesEditFilter.valueStr() ) { qbs.addRange( fieldNum( SalesTable, SalesId )).value(SalesEditFilter.valueStr()); } 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  29.03.2007, 12:36 | #6 | 
| Участник | 
			
			Syntax public QueryBuildLink addLink(fieldId _parentField, fieldId _thisField) а у вас как я вижу наоборот идет - _thisField, _parentField эт про линк второе: условие накладывается до супер или после в методе? | 
|  | 
|  29.03.2007, 13:00 | #7 | 
| Участник | Цитата: до супера Ктонить пробовал таблицу саму с собой связать ProdTable, поля ProdId и CollectRefProdId.. просто очень надо такую фишку сделать) 
				__________________ Рабочий день сокращает жизнь на 8 часов  Последний раз редактировалось Himan; 29.03.2007 в 13:10. | 
|  | 
|  29.03.2007, 13:20 | #8 | 
| Участник | 
			
			нет ничего трудного. Query q = new Query(); QueryBuildDataSource qbs; ; qbs = q.addDataSource(tableNum(ProdTable)); qbs = qbs.addDataSource(tableNum(ProdTable)); qbs.addLink(fieldNum( ProdTable, ProdId), fieldNum( ProdTable, CollectRefProdId)); или что-то другое имелось ввиду? | 
|  | |
| За это сообщение автора поблагодарили: Himan (1). | |
|  29.03.2007, 13:27 | #9 | 
| Участник | X++: qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefType ) ).value( Enum2Str(InventRefType::Sales) ); if( SalesEditFilter.valueStr() ) { prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); } 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  29.03.2007, 13:38 | #10 | 
| Участник | 
			
			ну  "неахти" это не показатель совсем. а както так оно может работать, потаму, что надо не добавлять ренж на каждый вызов, а только изменять значение его. | 
|  | 
|  29.03.2007, 13:54 | #11 | 
| Участник | Цитата: 
		
			а както так оно может работать, потаму, что надо не добавлять ренж на каждый вызов, а только изменять значение его.
		
	 clearRanges() и все) 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  29.03.2007, 14:11 | #12 | 
| Участник | X++: public void executeQuery() { QueryBuildDatasource qbs; ; prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).clearLinks(); prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).clearRanges(); if( SalesCheckFilter.value( ) ) { qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefType ) ).value( Enum2Str(InventRefType::Sales) ); if( SalesEditFilter.valueStr() ) { prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); } } super(); } 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  29.03.2007, 14:48 | #13 | 
| Дмитрий Ерин | 
			
			Почему-то мне это напомнило старый русский обычай - бить стакан об пол после выпивания его содержимого... Извините, не сдержался   P.S.: Himan, прислушайтесь к совету Jony. Лучше сразу привыкать к общепринятым правилам - и Вам, и вашим коллегам потом легче будет читать такой код. | 
|  | |
| За это сообщение автора поблагодарили: Himan (1). | |
|  29.03.2007, 15:00 | #14 | 
| Участник | 
			
			Ruff, просто их может быть, а может нет, так что держать их не вижу смысла)
		 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
|  29.03.2007, 15:40 | #15 | 
| Участник | 
			
			формируйте запрос в инит источника данных, запомните ранж, в executeQuery  только меняйте его значение.
		 | 
|  | 
|  29.03.2007, 15:47 | #16 | 
| Участник | 
			
			А как или сделать или, чтоб prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); или qbs = prodTable_ds.query().dataSourceTable(tableNum( ProdTable )).addDataSource(tableNum(ProdTable)); qbs.addLink( fieldNum( ProdTable, CollectRefProdId ), fieldNum( ProdTable, ProdId ) ); qbs.addRange( fieldNum( ProdTable, InventRefId ) ).value( SalesEditFilter.valueStr() ); подскажите) 
				__________________ Рабочий день сокращает жизнь на 8 часов  Последний раз редактировалось Himan; 29.03.2007 в 15:50. | 
|  | 
|  29.03.2007, 15:52 | #17 | 
| Участник | 
			
			сделать можно повсякому, за что я и люблю аксапту   ,  но все зависит от конкретной задачи. Опишите задачу как можно полнее, что есть и что надо получить, тогда и можно что-то думать. | 
|  | 
|  29.03.2007, 15:54 | #18 | 
| Участник | 
			
			1. Все заказы которые имеют в поле номер ссылки номер указанного в фильтре заказа. 2. Все заказы которые ссылаются (через поле ссылка производства т.е. ) на производственный заказ у которого в поле номер ссылки указан заказ из фильтра. При этом если я наложил стандартный фильт, то твой запрос должен накладывать ограничения сверх этого заказа. 
				__________________ Рабочий день сокращает жизнь на 8 часов  Последний раз редактировалось Himan; 29.03.2007 в 16:06. | 
|  | 
|  29.03.2007, 16:11 | #19 | 
| Участник | 
			
			т.е. показать заказы с номером из фильта и заказы, связанные с первым по полю CollectRefProdId ? т.е. показать основной заказ и его дочерние? я прально понял? | 
|  | 
|  29.03.2007, 16:16 | #20 | 
| Участник | 
			
			ну да
		 
				__________________ Рабочий день сокращает жизнь на 8 часов  | 
|  | 
| Теги | 
| datasource, query, датасорс (datasource), источник данных (datasource), подчиненный источник данных, программно, запрос (query) | 
|  | 
| 
 |