AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.10.2005, 10:22   #1  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
AddRange
Пожалуйста помогите, поиск дает столько неоднозначных вариантов...

Как запихунть в AddRange
условие типа

поле == 'значение' и (сумма полей > 0)
Старый 26.10.2005, 11:03   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Как бы вы сделали это на SQL?

см. Expressions in query ranges - Axaptapedia
Старый 26.10.2005, 11:42   #3  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва

Код:
 
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  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Вроде этого:
Код:
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  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Цитата:
Однако аксапта парсит такой запрос с маленькой ошибкой.
В смысле?
Старый 26.10.2005, 12:25   #6  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Получается вот такой запрос.
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  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Откуда возникает в запросе строка "1=" не понятно.
Старый 26.10.2005, 12:29   #8  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
ну хоть работает?
Старый 26.10.2005, 12:33   #9  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Цитата:
Сообщение от Bars
ну хоть работает?
Из-за этой маленькой ошибки нет , попробуй помучай сам дальше. Вообще мне удавалось строить достаточно сложные запросы, но чтобы все сразу заработало - это редко.
Старый 26.10.2005, 12:36   #10  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Цитата:
чтобы все сразу заработало - это редко
)) а выход есть?
Старый 26.10.2005, 12:43   #11  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Цитата:
Сообщение от Bars
)) а выход есть?
Перенес за знак ">" ReservPhysical, вроде заработало:

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  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
А зачем?
Если просто добавить 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  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
а разве - это поле показывает есть или нет остатки?
Старый 26.10.2005, 14:47   #14  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Не совсем. Оно показывает, что "баланс" равен 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  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
Понятно, спасибо....
Но проблма осталась, аксапта как будто игнорирует наложенное условие в AddRange
Старый 26.10.2005, 17:22   #16  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
1. В каком методе вы изменяете Query?
2. Какое Query вы изменяете (_ds.Query() или _ds.QueryRun().Query())?
__________________
Axapta v.3.0 sp5 kr2
Старый 26.10.2005, 20:23   #17  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
в методе ExecuteQuery
изменяю query()
Старый 26.10.2005, 20:53   #18  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
До или после Super()? Накаком источнике данных (InventTable или InventSum)?
__________________
Axapta v.3.0 sp5 kr2
Старый 27.10.2005, 07:03   #19  
Bars is offline
Bars
Участник
Аватар для Bars
 
312 / 14 (1) ++
Регистрация: 04.03.2005
Адрес: Москва
до Super, если честно на третьем источнике данных)) наверно в этом и проблема, так?
Старый 27.10.2005, 08:03   #20  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Ставьте на первый источник данных или на Init() формы и все будет OB!
Кстати, обратите внимание, что у вашем случае активируется кнопка сброса фильтра. Если ее нажать, то увидите что хотите
__________________
Axapta v.3.0 sp5 kr2
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Метод addRange() и его использование (верное) Akinak DAX: Программирование 8 06.04.2007 00:32
AddRange не фильтрует Ихъ бин программикеер DAX: Программирование 6 01.09.2006 14:27
Расширенный AddRange и OuterJoin Russland DAX: Программирование 0 04.07.2006 16:36
Можно ли редактировать форму, если на нее наложен addRange? Hans DAX: Программирование 10 22.05.2006 16:35
Как добавить в addRange условие по "или" на контейнерные поля? Lora DAX: Программирование 9 29.11.2004 13:52

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:42.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.