|  30.09.2008, 12:09 | #1 | 
| Участник | QueryBuildRange в select.. where 
			
			Имеется: qbr = qbd.addRange(fieldNum(LedgerJournalTrans, TransDate)); как в select добавить условие из range: while select AvLedgerJournalTrans where AvLedgerJournalTrans.TransDate == qbr ?? возможно ли такое? | 
|  | 
|  30.09.2008, 12:13 | #2 | 
| Ищущий знания... | X++: while select AvLedgerJournalTrans where AvLedgerJournalTrans.TransDate == qbr.value(); чтобы найти этот range в запросе нужно использовать метод findRange() у QueryBuildDataSource. 
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  30.09.2008, 12:16 | #3 | 
| Участник | 
			
			пробовал так, при компиляции " типы операнда не совместимы с оператором" . да, заполняется пользователем. у меня 2.5 Акс. может она что-то не понимает) | 
|  | 
|  30.09.2008, 12:20 | #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(); } 
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  30.09.2008, 12:22 | #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; } 
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  30.09.2008, 12:42 | #6 | 
| Участник | Цитата: В любом случае, ИМХО, подход кривой, propeller, Вы бы рассказали зачем Вам это понадобилось? | 
|  | |
| За это сообщение автора поблагодарили: lev (1). | |
|  30.09.2008, 12:42 | #7 | 
| Участник | 
			
			Все это будет работать только в случае точного указания искомого значения в range. В общем случае (range.value("A, B, C..D, !E, F*, *G, *H*")) проблема с добавлением в select условий из Query неразрешима. | 
|  | 
|  30.09.2008, 12:52 | #8 | 
| Ищущий знания... | Цитата:  Спасибо Lemming. 
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  30.09.2008, 13:12 | #9 | 
| Moderator | Цитата: X++: qr = new QueryRun(..._ds.queryRun().query()); while(qr.next()) { // что-то делаем с каждой записью из отфильтрованного пользователем набора } | 
|  | 
|  30.09.2008, 13:27 | #10 | 
| Участник | 
			
			в квери у меня один запрос по 2 таблицам с группорвками, селектом нужно было сделать подобный запрос но еще +2 таблицы джоином, а потом уже группировки. Хорошо если нельзя селектом, сделал второй query, написал в нем: qbr2.value(qbr1.value()) - не работает написал qbr2 = qbr1 тоже не работает, ну я думаю так и не должно. как правильно тогда передать из одного query1 рендж в другой query2? | 
|  | 
|  30.09.2008, 13:28 | #11 | 
| MCTS | Цитата: 
		
			как правильно тогда передать из одного query1 рендж в другой query2?
		
	 
				__________________  В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню | 
|  | 
|  30.09.2008, 13:35 | #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 | |||
| 
 |