powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Большие отчеты
9 сообщений из 9, страница 1 из 1
Большие отчеты
    #35928938
BagNum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Формируется отчет (Crystal Reports .Net 2005) из ~ 1.5 - 2 млн. записей.
На входе передается DataSet, в котором содержатся все данные.
При формировании отчета вылзит exeption: Out of memory.
Вопрос, собственно, можно ли как-то формировать отчет частями (страницам)?
Допустим, возможно ли как-то задать какое-то кол-во страниц, которое необходимо сформировать и получить при этом, сколько записей из DataSet на это потребовалось (чтобы затем выдать следующую порцию данных). Тупо расчитать кол-во записей на страницу не получается: данные (да и сама структура отчета) неоднородна: на одной странице может выводится как 60 записей, так и,например, 5...
...
Рейтинг: 0 / 0
Большие отчеты
    #35929433
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagNum,

А че так много-то? У вас реально есть пользователи, которым не лень хотя бы глазами пробежаться по 1.5-2 млн записей?

Если учесть, что 2 млн буковок находится в одном томе БСЭ, то заставить пользователя читать 2 млн записей... Кажись, абсурдно.
...
Рейтинг: 0 / 0
Большие отчеты
    #35931534
BagNum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У нас есть "замечательные" контролирующие органы (в лице ЦБ, ИФНС,...) которым юр. лица должны вести различного рода отчетность (декларации, балансы,...). В частности, есть такой отчет, называемый "Книга регистрации лицевых счетов". Для обычных ЮЛ это,может быть и не так много, а вот что касается банков... А уж там, поверьте мне, очень много всяких счетов...
...
Рейтинг: 0 / 0
Большие отчеты
    #35932047
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagNumУ нас есть "замечательные" контролирующие органы (в лице ЦБ, ИФНС,...) которым юр. лица должны вести различного рода отчетность (декларации, балансы,...). В частности, есть такой отчет, называемый "Книга регистрации лицевых счетов". Для обычных ЮЛ это,может быть и не так много, а вот что касается банков... А уж там, поверьте мне, очень много всяких счетов...
А если дробить по какому-нибудь реквизиту?
По дате открытия, например. Или по группе счетов. В этом случае, можно дробить крупно 3, 4 или помельче 301, 302, 401, 407.

А DataSet можно попробовать уменьшить не за счет высоты, а за счет ширины. Проверьте, не тянете ли вы лишних полей, не джойните ли таблички локально. И т.п.

А то что вы говорите, в кристалах недостижима. На момент формирования отчета движку нужны все данные, иначе нет смысла в его трехпроходности.
...
Рейтинг: 0 / 0
Большие отчеты
    #35934942
Bag_Num
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kruchinin PahanBagNumУ нас есть "замечательные" контролирующие органы (в лице ЦБ, ИФНС,...) которым юр. лица должны вести различного рода отчетность (декларации, балансы,...). В частности, есть такой отчет, называемый "Книга регистрации лицевых счетов". Для обычных ЮЛ это,может быть и не так много, а вот что касается банков... А уж там, поверьте мне, очень много всяких счетов...
А если дробить по какому-нибудь реквизиту?
По дате открытия, например. Или по группе счетов. В этом случае, можно дробить крупно 3, 4 или помельче 301, 302, 401, 407.

А DataSet можно попробовать уменьшить не за счет высоты, а за счет ширины. Проверьте, не тянете ли вы лишних полей, не джойните ли таблички локально. И т.п.

А то что вы говорите, в кристалах недостижима. На момент формирования отчета движку нужны все данные, иначе нет смысла в его трехпроходности.
Возможно дробление по счету 2-го порядка (первые 5 знаков), однако и при таком дроблении, некоторые группы тоже получаются "увесистыми".
Локально ничего не связываю - все на сервере.
У меня такое подозрение, что кристал делает копию передаваемого мною датасета (ну или какую-то свою внутреннюю копию этих эе данных данных). В результате память "пожирается" в двойном размере.

А можно ли как-то в Кристале прекратить формирование отчета? Например, есть счетчик, который считает кол-во сформированных страниц. При достижении определенного кол-ва вызывается данная функция (вот только какая и есть ли вообще?), и формирование отчета прекращается...
...
Рейтинг: 0 / 0
Большие отчеты
    #35935052
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bag_Num
А можно ли как-то в Кристале прекратить формирование отчета? Например, есть счетчик, который считает кол-во сформированных страниц. При достижении определенного кол-ва вызывается данная функция (вот только какая и есть ли вообще?), и формирование отчета прекращается...
Счетчик страниц это уже поздно. К этому моменту все данные уже получены, отсортированы, размечены на группы и т.д. Более того, уже сделан предварительный прогон по данным, который рассчитал высоты отдельных секций. Большинство формул к моменту разметки страниц уже посчитано.
...
Рейтинг: 0 / 0
Большие отчеты
    #35937354
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для монстрообразных отчётов можно попробовать list&label.
...
Рейтинг: 0 / 0
Большие отчеты
    #36024865
dron-s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или использовать FastReport..
в демках есть пример построения отчёта Matrix->Stress-Test (1000*1000) а это 1 000 000 записей ;)
отчёт был построен за 32422 мс...
разница между кристалом ощутимая...
...
Рейтинг: 0 / 0
Большие отчеты
    #36028167
FastReport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рискуя навлечь на себя гнев модератора всё же дополню...

Буквально вчера один из крупных клиентов звонил. Один из тройки крупнейших розничных банков. У них там некая проблема была при печати документа о миллионе листов! Т.е. формировался отчёт нормально, но буфер печати переполнялся. Т.е. речь уже даже не о миллионе записей.

Так что сразу надо будет посмотреть - будут ли ПЕЧАТАТЬСЯ сформированные отчёты!

PS: проблема решилась оптимизацией картинок в отчёте. Клиент использует FastReport 3. В FastReport 4 эта проблема решена на уровне ядра...

PPS: Да, кристал делает полную локальную копию датасета. Причём даже на этапе рисования отчёта... Т.е. в кристале реально надо будет строить по какому-то признаку (ID - ну бери не первые 5, а перве 6 знаков), а потом "дёргать" следующий отчёт на построение...

dron-sили использовать FastReport..
в демках есть пример построения отчёта Matrix->Stress-Test (1000*1000) а это 1 000 000 записей ;)
отчёт был построен за 32422 мс...
разница между кристалом ощутимая...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Большие отчеты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]