| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			QueryBuildRange в select.. where
			 
			
			Имеется: 
		
		
		
		
		
		
		
	qbr = qbd.addRange(fieldNum(LedgerJournalTrans, TransDate)); как в select добавить условие из range: while select AvLedgerJournalTrans where AvLedgerJournalTrans.TransDate == qbr ?? возможно ли такое?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 X++: while select AvLedgerJournalTrans where AvLedgerJournalTrans.TransDate == qbr.value(); чтобы найти этот range в запросе нужно использовать метод findRange() у QueryBuildDataSource. 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			пробовал так, при компиляции " типы операнда не совместимы с оператором" . 
		
		
		
		
		
		
		
	да, заполняется пользователем. у меня 2.5 Акс. может она что-то не понимает)  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			вот написал джоб  
		
		
		
		
		
		
			  естественно типы сравниваемых полей должны совпадать!X++: static void test(Args _args) { Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; InventTable inventTable; ; // создаем запрос qbds = query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value('Номенклатура'); // ищем в запросе range qbr = qbds.findRange(fieldNum(InventTable, ItemId)); // используем в запросе select InventTable where inventTable.ItemId == qbr.value(); } 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			чтобы быть уверенным в том что сходятся типы полей, можно сделать через переменную: 
		
		
		
		
		
		
			X++: static void test(Args _args) { Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; InventTable inventTable; ItemId itemId; ; // создаем запрос qbds = query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value('Номенклатура'); // ищем в запросе range qbr = qbds.findRange(fieldNum(InventTable, ItemId)); itemId = qbr.value();// используем переменную // используем в запросе select InventTable where inventTable.ItemId == itemId; } 
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
В любом случае, ИМХО, подход кривой, propeller, Вы бы рассказали зачем Вам это понадобилось?  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: lev (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Все это будет работать только в случае точного указания искомого значения в range. 
		
		
		
		
		
		
		
	В общем случае (range.value("A, B, C..D, !E, F*, *G, *H*")) проблема с добавлением в select условий из Query неразрешима.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  Спасибо Lemming.
		
				__________________ 
		
		
		
		
	"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
X++: qr = new QueryRun(..._ds.queryRun().query()); while(qr.next()) { // что-то делаем с каждой записью из отфильтрованного пользователем набора }  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			в квери у меня один запрос по 2 таблицам с группорвками, 
		
		
		
		
		
		
		
	селектом нужно было сделать подобный запрос но еще +2 таблицы джоином, а потом уже группировки. Хорошо если нельзя селектом, сделал второй query, написал в нем: qbr2.value(qbr1.value()) - не работает написал qbr2 = qbr1 тоже не работает, ну я думаю так и не должно. как правильно тогда передать из одного query1 рендж в другой query2?  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 MCTS 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			как правильно тогда передать из одного query1 рендж в другой query2?
		
	 
				__________________ 
		
		
		
		
	![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Ищущий знания... 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Что то типа такого: 
		
		
		
		
		
		
			X++: static void test(Args _args) { Query query = new Query(); QueryRun queryRun; QueryBuildDataSource qbds, qbds1, qbdsJoin; ; // первый запрос qbds = query.addDataSource(tableNum(InventTable)); qbds.addRange(fieldNum(InventTable, ItemId)).value('Номенклатура'); queryRun = new QueryRun(query); // джойним ещё таблицу qbds1 = queryRun.query().dataSourceTable(tableNum(InventTable)); qbdsJoin = qbds1.addDataSource(tablenum(InventItemGroup)); qbdsJoin.relations(true); qbdsJoin.addRange(fieldNum(InventItemGroup, ItemGroupId)).value(QueryValue('Группа')); } 
				__________________ 
		
		
		
		
		
			"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем Последний раз редактировалось lev; 30.09.2008 в 13:37. Причина: исправил relation на relationS  | 
| 
	
 | 
| Теги | 
| join, query | 
| 
	
	 | 
	
			 
			Похожие темы
		 | 
	||||
| Тема | Ответов | |||
| Разница NotInTTS и Found | 6 | |||
| Ошибка при старте АОСа | 4 | |||
| gatesasbait: Reverse keyword on Select Statements | 0 | |||
| Вопрос про Demand Planner | 4 | |||
| select * where ... | 10 | |||
		
  |