Упорядочивать группы по значению агрегатной функции

Обсуждение Stimulsoft Reports.NET
howdy
Сообщения: 10
Зарегистрирован: 29 окт 2009, 07:24
Откуда: moscow

Упорядочивать группы по значению агрегатной функции

Сообщение howdy »

Здравствуйте.

Хотел бы узнать, есть ли возможность упорядочивать группы по значению агрегатной функции?

Спасибо.
Jan
Сообщения: 495
Зарегистрирован: 19 фев 2009, 11:14

Упорядочивать группы по значению агрегатной функции

Сообщение Jan »

Здравствуйте,

Попробуйте вот такую форму агрегатной функции:

Код: Выделить всё

{Totals.Sum(GroupHeaderBand1, expression)}
Спасибо.
howdy
Сообщения: 10
Зарегистрирован: 29 окт 2009, 07:24
Откуда: moscow

Упорядочивать группы по значению агрегатной функции

Сообщение howdy »

Объясните пожалуйста, где должно быть выражение такого вида:
{Totals.Sum(GroupHeaderBand1, expression)} ?

В текстовом поле на бэнде заголовка группы (GHeader0) я поместил следующее выражение:
{Totals.Sum(GHeader0, table["FILE_SIZE"])} (Расчет суммы по полю table["FILE_SIZE"]).
Оно соответвует Вашему образцу. К сожалению это не помогло.
Упорядочивание групп происходит только по полю, которое является условием группировки.

Можно ли как-то задать параметры сортировки в условии группировки?

Моя попытка задать значение (по которому, как мне кажется,
происходит сортировка) в обработчике события "взять значение" бэнда заголовка группы
приводит к ошибке и закрытию дизайнера когда я нажимаю "Предварительный просмотр".
Я подставляю в обработчик следующий код:
{e.Value = Totals.Sum(GHeader0, table["FILE_SIZE"]);}
пробовал даже так
{Totals.Sum(GHeader0, table["FILE_SIZE"]);}

Пользуюсь версией 2009.2 от 7 сентября.
Очень надеюсь на Вашу помощь.
Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Упорядочивать группы по значению агрегатной функции

Сообщение Edward »

Здравствуйте,
Объясните пожалуйста, где должно быть выражение такого вида:
{Totals.Sum(GroupHeaderBand1, expression)} ?

В текстовом поле на бэнде заголовка группы (GHeader0) я поместил следующее выражение:
{Totals.Sum(GHeader0, table["FILE_SIZE"])} (Расчет суммы по полю table["FILE_SIZE"]).
Оно соответвует Вашему образцу. К сожалению это не помогло.
Упорядочивание групп происходит только по полю, которое является условием группировки.
Вы можете указать это выражение и на GroupHeader и на DataBand:

{Totals.Sum(GHeader0, table.FILE_SIZE)}

Если это выражение будет в условии группировки у GroupHeader, то произойдет зацикливание поскольку это выражение ссылается само на себя.
Можно ли как-то задать параметры сортировки в условии группировки?
Да, это возможно. У GroupHeaderBand для этого используйте свойство SortDirection.

Сортировка возможна по значению 'Condition', т.е. условия группировки.
Моя попытка задать значение (по которому, как мне кажется,
происходит сортировка) в обработчике события "взять значение" бэнда заголовка группы
приводит к ошибке и закрытию дизайнера когда я нажимаю "Предварительный просмотр".
Я подставляю в обработчик следующий код:
{e.Value = Totals.Sum(GHeader0, table["FILE_SIZE"]);}
пробовал даже так
{Totals.Sum(GHeader0, table["FILE_SIZE"]);}
Подскажите, какое у Вас условие для группы по смыслу задачи?

Спасибо.
howdy
Сообщения: 10
Зарегистрирован: 29 окт 2009, 07:24
Откуда: moscow

Упорядочивать группы по значению агрегатной функции

Сообщение howdy »

Здравствуйте.
Условием для группы является одно из полей.
Мне нужно:
1) Сгруппировать записи по этому полю.
2) Вычислить сумму по полю File_size для каждой группы, то есть суммарный размер.
3) Упорядочить результаты (то есть группы) НЕ по условию группировки, а по суммарному размеру.

Проблемы возникли только с пунктом 3.

Спасибо.
howdy
Сообщения: 10
Зарегистрирован: 29 окт 2009, 07:24
Откуда: moscow

Упорядочивать группы по значению агрегатной функции

Сообщение howdy »

Сортировка возможна по значению 'Condition', т.е. условия группировки.
Значит ли это, что сортировка по значению агрегатной функции не возможна?

Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Упорядочивать группы по значению агрегатной функции

Сообщение Edward »

Здравствуйте,

Для Вашего случая возможен подход с использованием DataFromOtherDataSource.

Откройте отчет в программе Demo из стандартной поставки.

Чтобы работала связь master-detail между DataFromOtherDataSource и Вашим источником, необходимо выбрать на панели "Properties" объект "Report" и установить CacheAllData свойство для него в true.

Спасибо.
Вложения
SortingUsingDataFromOtherDataSource.mrt
(15.82 КБ) 296 скачиваний
howdy
Сообщения: 10
Зарегистрирован: 29 окт 2009, 07:24
Откуда: moscow

Упорядочивать группы по значению агрегатной функции

Сообщение howdy »

К сожалению, в отправленном Вами отчете отсутствует бэнд группировки :(
Для меня обязательно чтобы проблема решалась с помощью бэнда группировки.

Спасибо.
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Упорядочивать группы по значению агрегатной функции

Сообщение Edward »

Здравствуйте,

Поставленная Вами задача решается при помощи отчета, который построен с использованием DataFromOtherDataSource.

Уточните, пожалуйста, Вашу задачу.

Спасибо.
howdy
Сообщения: 10
Зарегистрирован: 29 окт 2009, 07:24
Откуда: moscow

Упорядочивать группы по значению агрегатной функции

Сообщение howdy »

Дело в том, что отчеты создаются автоматическим образом в программе.
Для группировки и вычисления итогов используется бэнд заголовка группы.
Ваш способ потребует значительных и трудоемких изменений программы, создающей отчеты,
т.к он предполагает другой способ группировки.
Хотелось бы этого избежать.

Надеюсь на Ваше понимание.
Спасибо.
Ответить