|  26.10.2005, 10:22 | #1 | 
| Участник | AddRange 
			
			Пожалуйста помогите, поиск дает столько неоднозначных вариантов... Как запихунть в AddRange условие типа поле == 'значение' и (сумма полей > 0) | 
|  | 
|  26.10.2005, 11:03 | #2 | 
| Участник | |
|  | 
|  26.10.2005, 11:42 | #3 | 
| Участник | Код: SELECT * FROM inventtable inner join inventsum on inventtable.itemid = inventsum.itemid where InventSum.Inventdimid = ' ??00000031' AND InventSum.PostedQty + InventSum.Received - InventSum.Deducted + InventSum.Registered - InventSum.Picked - InventSum.ReservPhysical > 0 условие добавляется на датасорс формы | 
|  | 
|  26.10.2005, 12:20 | #4 | 
| Участник | 
			
			Вроде этого: Код: q.addDataSource(tablenum(InventTable)).addDataSource(tablenum(InventSum)).relations(true);
q.dataSourceTable(tablenum(InventSum)).addRange(fieldnum(InventSum, ItemId)).value(
strfmt("((%1.ItemId == \"%2\") && (%1.PostedQty + %1.Received - %1.Deducted + %1.Registered - %1.Picked - %1.ReservPhysical > 0))",
q.dataSourceTable(tablenum(InventSum)).name(),
queryvalue(itemId)));Последний раз редактировалось Bega; 26.10.2005 в 12:51. | 
|  | 
|  26.10.2005, 12:22 | #5 | 
| Участник | Цитата: 
		
			 Однако аксапта парсит такой запрос с маленькой ошибкой.
		
	 | 
|  | 
|  26.10.2005, 12:25 | #6 | 
| Участник | 
			
			Получается вот такой запрос. SELECT ... FROM INVENTTABLE A(NOLOCK) ,INVENTSUM B(NOLOCK) WHERE (A.DATAAREAID='dat') AND ((B.DATAAREAID='dat') AND (((B.ITEMID='Пылесос') AND ((((((B.POSTEDQTY+B.RECEIVED)-B.DEDUCTED)+B.REGISTERED)-B.PICKED)-B.RESERVPHYSICAL)>1=0)) AND (A.ITEMID=B.ITEMID))) ORDER BY A.DATAAREAID,A.ITEMID OPTION(FAST 8) Обратите внимание на ">1=0" - глюк, не знаю как его исправить | 
|  | 
|  26.10.2005, 12:26 | #7 | 
| Участник | 
			
			Откуда возникает в запросе строка "1=" не понятно.
		 | 
|  | 
|  26.10.2005, 12:29 | #8 | 
| Участник | 
			
			ну хоть работает?
		 | 
|  | 
|  26.10.2005, 12:33 | #9 | 
| Участник | Цитата: 
		
			Сообщение от Bars
			
			 ну хоть работает?  ,  попробуй помучай сам дальше. Вообще мне удавалось строить достаточно сложные запросы, но чтобы все сразу заработало - это редко. | 
|  | 
|  26.10.2005, 12:36 | #10 | 
| Участник | Цитата: 
		
			 чтобы все сразу заработало - это редко
		
	 | 
|  | 
|  26.10.2005, 12:43 | #11 | 
| Участник | Цитата: 
		
			Сообщение от Bars
			
			 )) а выход есть? q.dataSourceTable(tablenum(InventSum)).addRange(fieldnum(InventSum, ItemId)).value( strfmt("((%1.ItemId == \"%2\") && (%1.PostedQty + %1.Received - %1.Deducted + %1.Registered - %1.Picked > %1.ReservPhysical))", q.dataSourceTable(tablenum(InventSum)).name(), queryvalue(itemId))); Последний раз редактировалось Bega; 26.10.2005 в 12:46. | 
|  | 
|  26.10.2005, 14:24 | #12 | 
| Administrator | 
			
			А зачем? Если просто добавить InventSum.Closed == NoYes::No? 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  26.10.2005, 14:42 | #13 | 
| Участник | 
			
			а разве - это поле показывает есть или нет остатки?
		 | 
|  | 
|  26.10.2005, 14:47 | #14 | 
| Administrator | 
			
			Не совсем. Оно показывает, что "баланс" равен 0. То есть, если по какой-то аналитике у Вас не будет остатков, но будут заказы, то Closed = No. В любом случае, я не знаю Вашу задачу целиком. Просто предположил, что это близко к тому, что Вам нужно. Добавлено: Слушайте, а AvailPhysical - это не то, что Вы пытаетесь рассчитать? То есть, AvailPhysical != 0 Вам не подойдет? 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  26.10.2005, 14:48 | #15 | 
| Участник | 
			
			Понятно, спасибо.... Но проблма осталась, аксапта как будто игнорирует наложенное условие в AddRange | 
|  | 
|  26.10.2005, 17:22 | #16 | 
| Участник | 
			
			1. В каком методе вы изменяете Query?  2. Какое Query вы изменяете (_ds.Query() или _ds.QueryRun().Query())? 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  26.10.2005, 20:23 | #17 | 
| Участник | 
			
			в методе ExecuteQuery изменяю query() | 
|  | 
|  26.10.2005, 20:53 | #18 | 
| Участник | 
			
			До или после Super()? Накаком источнике данных (InventTable или InventSum)?
		 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  27.10.2005, 07:03 | #19 | 
| Участник | 
			
			до Super, если честно на третьем источнике данных)) наверно в этом и проблема, так?
		 | 
|  | 
|  27.10.2005, 08:03 | #20 | 
| Участник | 
			
			Ставьте на первый источник данных или на Init() формы и все будет OB! Кстати, обратите внимание, что у вашем случае активируется кнопка сброса фильтра. Если ее нажать, то увидите что хотите   
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  | 
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
| 
 |