Страница 1 из 1

Подсчет суммы по группе

Добавлено: 07 дек 2009, 06:01
prm
Здравствуйте,

У меня версия 2007.2 Знаю, что старая и уже планирую возобновить подписку. Возможно, моя проблема решена в последующих версиях. Если - нет, подскажите как правильно построить отчет.

Отчет выводит данные, сгруппированные в двух уровнях. Существует 5 основных групп, по которым надо выводить итоговые суммы и супергруппа, которая должна вывести итоги по сумме первых трех групп. Данные выводятся с помощью кросс-данных, поскольку требуется еще группировка по времени, которая выполняется с помощью отдельного поля в запросе. Для подсчета сумм по группам первого уровня использую свой массив переменных и событие GetValueEvent. Сумма по супергруппе получается из отдельного источника данных.

Как оказалось, когда очередная строка не помещается целиком на странице по вертикали и она переносится на другую страницу, то GetValueEvent вызывается дважды и сумма расчитывается неправильно.

Подскажите, как правильно посчитать сумму по группе.

Спасибо.

Подсчет суммы по группе

Добавлено: 07 дек 2009, 09:40
Jan
Здравствуйте,

В версии 2007.2 используется EngineV1. Этот движок построения отчетов использует механизм состояний, чтобы обрабатывать такие ситуации как Вы описали. Вам необходимо будет переопределить два метода SaveState и RestoreState в коде отчета. Должно получиться вот так:

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

public class Отчет : Stimulsoft.Report.StiReport
    {
        
	public override void SaveState(string stateName)
	{
		base.SaveState(stateName);

                //Здесь сохраняем состояние переменных
	}

	public override void RestoreState(string stateName)
	{
		base.RestoreState(stateName);

                //Здесь востанавливаем состояние переменных
	}
	
        public Отчет()
        {
            this.InitializeComponent();
        }
Кроме этого нужно использовать событие Rendering у Databand или CrossDataBand'а вместо GetValueEvent.


Спасибо.