Пагинация в ActiveReports

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Пагинация в ActiveReports

Сообщение alibek » 18.12.2009 (Пт) 23:26

Есть довольно сложный отчет в ActiveReports.
Примерно его структуру можно отобразить так:

Код: Выделить всё
PageHeader
  GroupNodeHeader
    GroupOfficeHeader
      GroupZoneHeader
        GroupAddressHeader
          Detail
        GroupAddressFooter
      GroupZoneFooter
    GroupOfficeFooter
  GroupNodeFooter
PageFooter

Все секции, в том числе и Detail, фиксированной высоты. Перед секцией GroupZoneHeader вставляется разрыв страницы (т.е. секция всегда начинается с новой страницы). Секция GroupAddressHeader повторяется на каждой странице.
В Footer подбиваются итоги по соответствующей группе.
Кроме того, в PageFooter подбиваются итоги по данным на текущем листе.
Нужно сделать так, чтобы не было "висячих" секций. Т.е. чтобы ни на одном листе не было такого, чтобы секция выводилась без Detail.
Если для Header это решается свойством секции GrpKeepTogether=GrpFirstDetail, то с Footer никак не получается добиться нужного результата.
Вроде бы стандартная задача, а вот много времени сделать так не удается.
Не подскажите, как сделать?
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Пагинация в ActiveReports

Сообщение alibek » 21.12.2009 (Пн) 22:06

С пагинацией более-менее разобрался.
Правда отсутствие свойства "together with last detail" приводит в недоумение — я считал это само собой разумеющимся в отчетах — ну да ладно.
Однако выяснилось, что в AR версии 2.5 есть гораздо более серьезный баг.
Возможно дело в том, что используется пять группировок, возможно дело в чем-то другом, однако когда итоги не умещаются на текущую страницу и переносятся на следующий лист, в PageHeader печатается информация не той группы, чьи итоги выводятся, а следующей.
Т.е. если есть группа Office с кодами 1 и 2, и для первой группы итоги не умещаются на первую страницу, то на второй странице будут выведены GroupOfficeFooter для Office=1, а в PageHeader для Office=2.
Кто с таким сталкивался?
Или другой вопрос, может быть посоветуете другой репорт, на который можно было бы безболезненно перейти (желательно фриварный)?
Lasciate ogni speranza, voi ch'entrate.

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Пагинация в ActiveReports

Сообщение FaKk2 » 22.12.2009 (Вт) 0:13

AR уже шестой есть. Не смотрел?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Пагинация в ActiveReports

Сообщение alibek » 22.12.2009 (Вт) 8:53

Он для .NET.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Пагинация в ActiveReports

Сообщение Andrey Fedorov » 27.12.2009 (Вс) 1:47

alibek писал(а):Однако выяснилось, что в AR версии 2.5 есть гораздо более серьезный баг.
Возможно дело в том, что используется пять группировок, возможно дело в чем-то другом, однако когда итоги не умещаются на текущую страницу и переносятся на следующий лист, в PageHeader печатается информация не той группы, чьи итоги выводятся, а следующей.


Вопрос спорный - вряд ли это вообще баг. Ведь это с какой стороны посмотреть...
Вообще же AR достаточно гибок - можно легко заполнять поля заголовка самому. Что мешает?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Пагинация в ActiveReports

Сообщение alibek » 27.12.2009 (Вс) 12:17

Andrey Fedorov писал(а):Вопрос спорный - вряд ли это вообще баг. Ведь это с какой стороны посмотреть...

А что же это еще? В шапке страницы указывается "Москва", а в итогах "Итого по Твери"?
Самому заполнять очень неудобно. Обошел тем, что после последней записи в группе добавил одну фиктивную, с нулевой высотой секции.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Пагинация в ActiveReports

Сообщение Andrey Fedorov » 27.12.2009 (Вс) 19:01

alibek писал(а):
Andrey Fedorov писал(а):Вопрос спорный - вряд ли это вообще баг. Ведь это с какой стороны посмотреть...

А что же это еще? В шапке страницы указывается "Москва", а в итогах "Итого по Твери"?


А, у вас итоги на несколько страниц... А начинать новую группу с новой страницы - не подходит?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Пагинация в ActiveReports

Сообщение alibek » 27.12.2009 (Вс) 20:03

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

Примерно так:
Код: Выделить всё
Город: Москва
  Строка 1
  Строка 2
  Строка 3
  Строка 4
<разрыв страницы>
Город: Тверь
  ИТОГО по Москва: ...
<разрыв страницы>
Город: Тверь
  Строка 1
  Строка 2
  ...
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Пагинация в ActiveReports

Сообщение Andrey Fedorov » 28.12.2009 (Пн) 0:53

alibek писал(а):Новая группа и так с новой страницы.
Если в группе достаточно много элементов, то группа целиком на лист не умещается и переносится на следующую страницу.
Иногда выходит так, что разрыв страницы получается как раз перед итогами. В этом случае итоги висят на новой странице без деталей, плюс шапка у этой новой страницы относится уже к новой группе (не к той, чьи итоги выводятся).

Да все тут логически правильно - так как первая секция Detail страницы относится уже к новой группе - отчего шапка должна быть к старой?
В общем, такое уже везде решается через код - да вы ведь вроде уже решили...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Пагинация в ActiveReports

Сообщение alibek » 30.12.2009 (Ср) 11:27

Вообщем, все сделал.
Итоги на странице самодельные, разбивка на страницы самодельная (при форматировании секции проводится проверка, что секция последняя в группе, и если это так и итоги не уместятся на страницу, вставляется разрыв страницы), заголовки групп и страницы тоже самодельные.
Странно только, что для вообщем-то стандартной задачи (не выводить итоги без деталей) потребовалось столько вспомогательного кода.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Пагинация в ActiveReports

Сообщение alibek » 30.12.2009 (Ср) 11:32

Andrey Fedorov писал(а):Да все тут логически правильно - так как первая секция Detail страницы относится уже к новой группе - отчего шапка должна быть к старой?

Так в том то и дело, что это не так.
На первой странице шапка и детали. На второй странице шапка и итоги текущей группы. На третьей странице шапка и детали следующей группы.
Так вот на второй странице в шапке выводится информация уже для следующей группы, т.е. шапка на 2 и 3 странице одинаковая. А должна быть одинаковая для 1 и 2 страницы.
Вначале рендерятся детали, заголовки и итоги (причем порядок рендеринга предсказать нельзя), затем фетчатся данные (и тут уже группа другая), после этого рендерятся колонтитулы страницы (с данными следующей группы) и выводятся на печать.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Пагинация в ActiveReports

Сообщение Andrey Fedorov » 30.12.2009 (Ср) 17:57

alibek писал(а):Так в том то и дело, что это не так.


Ну все же так сложно что посоветовать - был бы примерчик кода который можно было бы пощупать...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList