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

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

Добавлено: 11 мар 2009, 03:02
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 гига падает.
что можно сделать?

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

Добавлено: 11 мар 2009, 03:46
Edward
Здравствуйте, Yuriy.

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

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

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

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

Спасибо.

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

Добавлено: 11 мар 2009, 05:17
Yuriy
1. делов том что не освобождается память и даже при разбивке на части загружается память аналогично полному отчету.
2. тяжелых объектов нет. в отчет выводится лишь обычный текст.
3. можете уточнить каким образом используется кэширование. установить ReportCacheMode = StiReportCacheMode.On?. в каком месте кода (перед компиляцией или после нее?

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

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

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

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

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

Спасибо.