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

Как сделать 3х уровневую нумерацию в группах и подгруппах

Добавлено: 12 июл 2011, 14:16
Александр
проблема такая - отчет в нем две группы заголовков + во второй группе содержание
group_count.gif
group_count.gif (13.04 КБ) 15415 просмотров
1. первую группу нумерую через вспомогательное вычисляемое поле 'gr' по формуле CumulativeSum ( GR for all) где gr - соответственно вычисляемое поле лежащее на уровне первой группы с формулой If (GetRow() = First(GetRow() for group 2), 1, 0)
2. вторую группу не знаю как нумеровать - вообще не понимаю
3. наполнение второй группы нумерую по формуле CumulativeSum( 1 for group 2 )

подскажите плиз формулу для нумерации второй группы
ps
может и эти формулы неправильные - но что-то считают вроде
pps
да- версия PDM 4.40

Re: Как сделать 3х уровневую нумерацию в группах и подгруппа

Добавлено: 13 июл 2011, 09:35
Anderyt
CumulativeSum( 1 for group 1 ) не сработает?
или такую же фишку, как для первой группы, через новое вычисляемое поле..
пробовал уже?

Re: Как сделать 3х уровневую нумерацию в группах и подгруппа

Добавлено: 13 июл 2011, 09:54
Anderyt
вроде что то получилось..
в заголовке 2-й группы сделал выч. поле gr1 с выражением If (GetRow() = First(GetRow() for group 2), 1, 0)
потом в заголовке 2-й группы - выч. поле для номера с выражением CumulativeSum ( GR1 for group 1)

Re: Как сделать 3х уровневую нумерацию в группах и подгруппа

Добавлено: 13 июл 2011, 12:31
Александр
получилось вот как

для первой группы (в области заголовка)
вычисляемое поле Gr1= If (GetRow() = First(GetRow() for group 1), 1, 0)
номер группы = CumulativeSum ( Gr1 for all)
....для второй группы (в области заголовка)
....вычисляемое поле Gr2= If (GetRow() = First(GetRow() for group 2), 1, 0)
....номер группы =CumulativeSum ( Gr2 for group 1)
........для элементов второй группы (в области данных)
........номер элемента=CumulativeSum( 1 for group 2 )

Андрюха - спасибо за содействие!!! :wink:

Re: Как сделать 3х уровневую нумерацию в группах и подгруппа

Добавлено: 13 июл 2011, 13:32
Anderyt
:-)
тебе спасибо! у нас недавно была не очень актуальная похожая задача - забили в итоге.. до игр с getrow и firstrow не додумались :-)

Re: Как сделать 3х уровневую нумерацию в группах и подгруппа

Добавлено: 26 июл 2011, 12:55
Старик Крупский
В практических рекомендациях в свое время мне попался раздел "Нумерация групп в формах". Там практически то же самое:
"Зачастую возникают ситуации, когда в формах, допускающих группировку, требуется проставить порядковый номер в заголовке группы. Решение этой задачи состоит в том, чтобы с помощью одного вычисляемого «пометить» начало новой группы единицей, а с помощью другого – подсчитать и отобразить нарастающий итог этих пометок. Оба вычисляемых поля размещаются в области заголовка группы.
Приведем содержание вычисляемых полей. Выражение вычисляемого поля, «помечающего» начало группы выглядит так:

If (GetRow() = First(GetRow() for group 1), 1, 0)

Дадим этому полю имя, например, GR. На это имя будет ссылаться второе вычисляемое поле.

Выражение вычисляемого поля, подсчитывающего нарастающий итог пометок и отображающего порядковый номер группы выглядит так:

CumulativeSum ( GR for all)

Чтобы не нарушать оформление, поле GR можно сделать скрытым.
"