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