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

Как можно сгруппировать данные автоматически с указанием начала и окончания позиции (См. РИСУНОК)

Добавлено: 24 апр 2009, 07:40
sergsuhanov
Картинка - http://glasscad.ru/stimulsoft/001.jpg

Собственно говоря такой способо позволит уменьшить кол-во выводимых данных. У Вас есть в таблице слияние полей и т.д. но необходимо иметь информацию о том с какой позиции была начата группировка и в какой позиции окончена. На рисунке это поле ID со значением 1-3.

БЫЛО бы замечательно видеть такой ф-ал в Вашем генераторе.

Если я непонятно изложил материал ICQ 86157175 - Сергей.

Как можно сгруппировать данные автоматически с указанием начала и окончания позиции (См. РИСУНОК)

Добавлено: 24 апр 2009, 09:10
t0lik
sergsuhanov писал(а):Картинка - http://glasscad.ru/stimulsoft/001.jpg

Собственно говоря такой способо позволит уменьшить кол-во выводимых данных. У Вас есть в таблице слияние полей и т.д. но необходимо иметь информацию о том с какой позиции была начата группировка и в какой позиции окончена. На рисунке это поле ID со значением 1-3.
По идее такое можно сделать с помощью групповых бэндов с бэндом данных нулевой высоты, разместив все мемки на групповом бэнде и запомнив ID первой и последней записей группы.

Как можно сгруппировать данные автоматически с указанием начала и окончания позиции (См. РИСУНОК)

Добавлено: 24 апр 2009, 11:15
sergsuhanov
Можно конечно сделать, но это вряд ли будет использоваться как разовое решение - это очень частый подход в оформлении документов.
Это очень сильно экономит бумагу!!! На чем собственно отчеты и печатаются.
Предлагаю обсудить подробнее данную тему.
Если есть желание конечно :)

Как можно сгруппировать данные автоматически с указанием начала и окончания позиции (См. РИСУНОК)

Добавлено: 24 апр 2009, 11:29
Jan
Здравствуйте Сергей,

Посмотрите пожалуйста в Demo приложении (2009.1) пример отчета Groups with Reports->Groups with Ranges.

Спасибо.

Как можно сгруппировать данные автоматически с указанием начала и окончания позиции (См. РИСУНОК)

Добавлено: 24 апр 2009, 12:06
sergsuhanov
В предложенном отчете используется группировка по определенному значению например: "{Customers.CompanyName.Substring(0, 1)}"
Хотя на самом деле Вы группируете данные как показано ниже:
"
string str = Customers.CompanyName.Substring(0, 1);

if (str.IndexOfAny(new char[]{'A', 'B', 'C', 'D'}) != -1)e.Value = "A-D";
else if (str.IndexOfAny(new char[]{'E', 'F', 'G', 'H'}) != -1)e.Value = "E-H";
else if (str.IndexOfAny(new char[]{'I', 'J', 'K', 'L'}) != -1)e.Value = "I-L";
else if (str.IndexOfAny(new char[]{'M', 'N', 'O', 'P'}) != -1)e.Value = "M-P";
else if (str.IndexOfAny(new char[]{'Q', 'R', 'S', 'T'}) != -1)e.Value = "Q-T";
else if (str.IndexOfAny(new char[]{'U', 'V', 'W', 'X'}) != -1)e.Value = "U-X";
else e.Value = "Y-Z";
" - Это Ваш код в events значении GroupHeader'а

Одним словом, Вы сами сказали как хотите сгруппировать данные, что собственно не является проблемой и может решаться несколькими разными способами.
Я же говорю о других, совершенно других группировках. Я давно пользуюсь Вашим генератором, эту задачу можно решать через локальные переменные или предварительную подготовку данных. НО!!! :)
Я предлагаю сделать это ф-ю системы если конечно этого нет, так как это очень удобная и полезная штука :)
Еще раз о задаче: Консолидация строк в отчете в одну строку, с возможностью получения первого и последнего значения какого-либо поля из консолидированных данных.
Практическая мотивация: зачем печатать несколько одинаковых строк если можно сказать что с позиции 134 по 179 данные имеют такое то значение.



Как можно сгруппировать данные автоматически с указанием начала и окончания позиции (См. РИСУНОК)

Добавлено: 29 апр 2009, 06:36
sergsuhanov
Для решения этой задачи можно использовать StiVirtualAdapterService
В мастере есть возможность указания колонок группировки, вывода первой и поседней записи и кол-ва данных в группировке.
Единственное, чего нет в этом классе, это указания каким образом проводить группировку - либо в пределах всех данных, либо построчно.
Это должно решаться через создание своего класса (наследника от базового)