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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2011, 17:42   #1  
refined is offline
refined
Участник
 
9 / 10 (1) +
Регистрация: 18.02.2011
:( Сводная таблица на форме через ADO.Recordset
Как сделать суммирование в сводной таблице по полям? Чтобы происходила автоматическая группировка?

Грубо говоря, есть так:
X++:
   pivotTotal = activeView.AddTotal('Количество', pivotField, ptConstants.plFunctionCount());  
    COM::createFromObject(activeView.DataAxis()).InsertTotal(pivotTotal);
А хочется чтобы происходило суммирование в случае если поле Amount. Но почему-то такой код не работает:
X++:
   pivotTotal = activeView.AddTotal('Сумма', pivotField, ptConstants.plFunctionSum());
    COM::createFromObject(activeView.DataAxis()).InsertTotal(pivotTotal);
Метод "AddTotal" в COM-объекте класса "PivotView" возвратил код ошибки 0x80045DE6 (<неизвестно>), который означает: Function cannot be applied to the given field.
PS я пробовал любые поля pivotFields.Item(i)...
Старый 04.03.2011, 18:29   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Я бы с такими вещами вначале разобрался в Бейсике (VBA) - в более родной для Pivot'а среде. Возьмите Excel, на один лист поместите ваши данные (recordset), на другой посадите PivotTable (внимание! не путать со сводной таблицей самого Excel!). Далее изобразите программу на VBA, которая бы делала то, что вы хотите. И только потом переносите в Аксапту.

Для удобства манипулирования свойствами PivotTable на VBA, воспользуйтесь подходом: Повышение комфортности разработки при использовании Spreadsheet

P.S. Если вы используете в качестве прототипа мой пример про пользователей и группы, то для суммы должно быть как-то так:
X++:
    rst = AdoRst::openRecordsetInMemory([   
             ...
            ['Amount', #adDouble]]);

    ...

    fld = flds.Item('Amount'); fld.Value(3.62);

    ...

    processFieldSet(activeView.DataAxis(), 'Amount');

    pivotTotal = activeView.AddTotal('Сумма', pivotField, ptConstants.plFunctionSum());  // использование именованной константы
    COM::createFromObject( activeView.DataAxis() ).InsertTotal(pivotTotal);
Поле-то надо добавить суммируемое в область данных (DataAxis). У меня же в примере с количеством используется просто последнее, оказавшееся в переменной pivotField. При подсчете количества этого достаточно, потому что считать можно практически по любому полю. Для суммы же нужно вполне конкретное числовое: в вашем случае - Amount.

Последний раз редактировалось Gustav; 05.03.2011 в 10:38.
Старый 05.03.2011, 10:39   #3  
refined is offline
refined
Участник
 
9 / 10 (1) +
Регистрация: 18.02.2011
Спасибо огромное.
На самом деле я работал с VBA около месяца, но всё уже забыто. По началу мне действительно показалось, что сводные таблицы в Excele и на форме одинаковые. Но excel не сравнимо мощнее.
Цитата:
Сообщение от Gustav Посмотреть сообщение
Для удобства манипулирования свойствами PivotTable на VBA, воспользуйтесь подходом: Повышение комфортности разработки при использовании Spreadsheet
Это мне не удалось настроить так как у меня не активное VBA и макросы. Т.е. то ли их совсем нет, то ли их отключили на моем компьютере.
Старый 05.03.2011, 12:25   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Сводные таблицы и Olap в Dax2009

Посмотрите мой проект. В примере идет группировка типа "Количество", но и с типом "Сумма" работает. Возможно, у вас изначально поле "Сумма" неверно добавлено в COM-объект.
__________________
Ivanhoe as is..
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вспомогательный класс для импорта из Excel через ADO gl00mie DAX: База знаний и проекты 80 10.04.2017 10:55
Сводная таблица. Сворачивание Andrux DAX: Программирование 2 03.08.2010 16:17
executeQuery на Форме Arahnid DAX: Программирование 12 03.11.2007 23:25
Запуск программы из Аксапты через 2-хзвенку Migel_84 DAX: Программирование 25 27.04.2006 09:41
Как вызвать через ADO хранимую процедуру с параметрами ? LSA DAX: Программирование 16 23.12.2004 18:17

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

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

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