Проблема с построением отчета

Обсуждение Stimulsoft Reports.NET
Ответить
Yuriy
Сообщения: 19
Зарегистрирован: 11 мар 2009, 02:10

Проблема с построением отчета

Сообщение Yuriy »

Доброго дня.
возникла проблема при построении отчета из проекта.
при построении более 13000 страниц падает.
дает ошибку OutOfMemory.
System.OutOfMemoryException: Выдано исключение типа "System.OutOfMemoryException".
в System.Collections.ArrayList.set_Capacity(Int32 value)
в System.Collections.ArrayList.EnsureCapacity(Int32 min)
в System.Collections.ArrayList.Add(Object value)
в System.Collections.CollectionBase.System.Collections.IList.Add(Object value)
в Stimulsoft.Report.Components.StiComponentsCollection.AddCore(StiComponent component)
в Stimulsoft.Report.Components.StiComponentsCollection.Add(StiComponent component)
в Stimulsoft.Report.Components.StiComponentsCollection.AddRange(StiComponentsCollection components)
в Stimulsoft.Report.Components.StiContainer.GetComponents()
в Stimulsoft.Report.Components.StiContainer.GetComponents()
в Stimulsoft.Report.Components.StiContainer.MoveComponentsToPage()
в Stimulsoft.Report.Components.StiPage.ClearPage()
в Stimulsoft.Report.Engine.StiPostProcessProviderV2.PostProcessPage(StiPage page, Boolean isFirstPage, Boolean isLastPage)
в Stimulsoft.Report.Engine.StiPostProcessProviderV2.PostProcessPages(StiPagesCollection pages)
в Stimulsoft.Report.Engine.StiRenderProviderV2.Render(StiReport report, StiRenderState state)
в Stimulsoft.Report.Engine.StiReportV2Builder.RenderSingleReport(StiReport masterReport, StiRenderState renderState)
в Stimulsoft.Report.StiReport.Render(StiRenderState renderState)
в Stimulsoft.Report.StiReport.Render(Boolean showProgress, Int32 fromPage, Int32 toPage)
в Stimulsoft.Report.StiReport.Render(Boolean showProgress)
в Stimulsoft.Report.StiReport.Render()
строится отчет и при достижении памяти используемой пика 1.5 гига падает.
что можно сделать?
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Проблема с построением отчета

Сообщение Edward »

Здравствуйте, Yuriy.

В данном случае можем посоветовать Вам следующее:

1. Сделать отчет частями - т.е. разбить основной отчет на несколько отчетов.

2. Определить тяжеловесные объекты в отчете (если такие есть) и попытаться их уменьшить (к примеру размер картинок)

3. Использовать кэширование.

Спасибо.
Yuriy
Сообщения: 19
Зарегистрирован: 11 мар 2009, 02:10

Проблема с построением отчета

Сообщение Yuriy »

1. делов том что не освобождается память и даже при разбивке на части загружается память аналогично полному отчету.
2. тяжелых объектов нет. в отчет выводится лишь обычный текст.
3. можете уточнить каким образом используется кэширование. установить ReportCacheMode = StiReportCacheMode.On?. в каком месте кода (перед компиляцией или после нее?
Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

Проблема с построением отчета

Сообщение Edward »

Да, режим кэширования Вы можете выставить следующим образом:

Если report.ReportCacheMode = StiReportCacheMode.Auto, то первая страница, которая пойдет в кэш, определяется следующим параметром:
StiOptions.Engine.ReportCache.LimitForStartUsingCache.

Если report.ReportCacheMode = StiReportCacheMode.On то кэширование начнется с первой страницы.

Число страниц, которое постоянно находится в оперативной памяти, определяется параметром:
StiOptions.Engine.ReportCache.AmountOfQuickAccessPages.

Спасибо.
Ответить