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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.02.2004, 09:33   #1  
Dimus is offline
Dimus
Участник
 
11 / 10 (1) +
Регистрация: 15.07.2003
Агрегация в форме
Не могу создать простейшую форму с 2-мя полями: "Группа номенклатуры", "Заказано за период".
Т.е. в форме нужно показать список групп номенклатуры и для каждой группы - агрегированную сумму по полю SalesLine.SalesQty (причем с фильтрацией строк заказов за указанный период "ДатаС" и "ДатаПо" - эти поля задаются в верхней части формы). Какой подход для создания подобный формы лучше применить?
С уважением.
Старый 11.02.2004, 10:42   #2  
DMA is offline
DMA
Участник
 
109 / 19 (1) ++
Регистрация: 30.09.2003
Я бы использовал временную таблицу или view в качестве DataSource формы + класс в котором производится выборка записей во временную таблицу или View согласно необходимым критериям и параметрам группировки.
Старый 11.02.2004, 10:53   #3  
Dimus is offline
Dimus
Участник
 
11 / 10 (1) +
Регистрация: 15.07.2003
2DMA:
Вариант с временной таблицей для датасорса формы понятен. Пока рассматриваю его как последний из вариантов решения, поскольку хочется решить задачу без создания временных таблиц. Неужели подобная проблема не решается без создания врем.таблиц, например, дисплэй-методами или еще как-то?
Вью тоже пробовал. Но там проблема в том, что вью ничего не знает о параметрах на форме (ДатаС и ДатаПо).
Та эе проблема с дисплей-методами на уровне таблицы, т.к. таблица также ничего не знает об интервале дат, указанных на форме (по крайней мере, не знаю как заставить дисплэй-метод увидеть эти параметры).
Старый 11.02.2004, 12:48   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Можно попробовать использовать в качестве datasource таблицу InventItemGroup и написать на ней display-метод, в котором заджойнить SalesTable (с фильтром по интервалу дат), SalesLine и InventTable (с фильтром по группе) и просуммировать SalesQty. Но тормозить будет, наверное...
__________________
Андрей.
Старый 11.02.2004, 12:51   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,262 / 984 (37) +++++++
Регистрация: 03.04.2002
Помоему этот вопрос задается раз в пол года. Ответ всегда один:
qbDS.addSelectionField(fieldId , SelectionField::Sum )
Старый 11.02.2004, 12:58   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Предлагаю такой вариант:
1. Создать Query (в AOT или из кода), который получал бы нужные вам данные за какой-то предопределенный период.
2. Использовать этот query в своем DS на форме.
3. При изменение дат в форме обновлять значение range и данные в гриде.
Старый 14.09.2005, 10:25   #7  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
Правильно ли я делаю?
PHP код:
this.query().dataSourceNo(1).addRange(fieldNum(VendPackingSlipJour,DeliveryDate)).value(r);
this.query().dataSourceNo(1).addRange(fieldNum(VendPackingSlipJour,OrderAccount)).value(r2);
this.query().dataSourceNo(1).orderMode(orderMode::GroupBy);
this.query().dataSourceNo(1).addSortField(fieldNum(VendPackingSlipJour,PackingSlipId));
this.query().dataSourceNo(1).addSortField(fieldNum(VendPackingSlipJour,DeliveryDate));
this.query().dataSourceNo(1).addSortField(fieldNum(VendPackingSlipJour,PurchId));
this.query().dataSourceNo(1).addSortField(fieldNum(VendPackingSlipJour,CurrencyCode_RU));
this.query().dataSourceNo(1).addSortField(fieldNum(VendPackingSlipJour,PurchaseType));
qbds this.query().dataSourceNo(1).addDataSource(tableNum(VendPackingSlipTrans));
qbds.joinMode(joinMode::InnerJoin);
qbds.addLink(fieldNum(VendPackingSlipJour,PackingSlipId),fieldNum(VendPackingSlipTrans,PackingSlipId));
qbds.orderMode(orderMode::GroupBy);
qbds.addSortField(fieldNum(VendPackingSlipTrans,PackingSlipId));
qbds.addSelectionField(fieldNum(VendPackingSlipTrans,LineAmount_RU),SelectionField::Sum);
SUMM.dataSource(qbds);
SUMM.dataField(fieldNum(VendPackingSlipTrans,LineAmount_RU)); 
СУММ - это риалЕдит в гриде.
5 полей из журнала отображаются нормально, а сумма всегда нулевая. Трасернул запрос, он правильный и возвращает правильные суммы.
Старый 14.09.2005, 10:38   #8  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Нет, так нельзя. Нужно писать display-метод на VendPackingSlipJour, возвращающий сумму по строкам отборочных накладных, и его уже класть на форму.
__________________
Андрей.
Старый 14.09.2005, 15:17   #9  
bagyr is offline
bagyr
Участник
 
74 / 10 (1) +
Регистрация: 15.02.2005
Адрес: Томск
спасибо! так и сделал.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Использование семейства InventDimCtrl_Frm_* - 2 DS InventDim на одной форме Pavlo AKA Panok DAX: База знаний и проекты 5 22.12.2008 17:15
Как не выводить заголовки в форме, если нет строк? DreamCreator DAX: Программирование 9 29.05.2008 15:10
Название полей в форме запроса PavelSR DAX: Программирование 4 11.07.2007 17:19
Добавление источника к запросу на форме Lucky13 DAX: Программирование 1 21.05.2007 17:12
BugFix: В форме складских журналов нельзя перемещаться с помощью клавиш курсора Maxim Gorbunov DAX: Программирование 5 21.01.2005 01:20

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:13.