проблема с программным подключением DataSources
Добавлено: 10 апр 2012, 08:34
Добрый день. Я использую .mrt файл в качестве шаблона, который правлю программно.
При удалении источников данных с помощью
и последующем воссоздании их с помощью
в report.Render() возникает исключение
Operator '+' is not defined for type 'Decimal' and type 'DBNull'.
**************************************************************************************
Stack trace:
at Microsoft.VisualBasic.CompilerServices.Operators.AddObject(Object Left, Object Right)
at Reports.FAAPro.txtCustomFieldPreviousTotal8_GetValue_End(StiComponent sender)
at Stimulsoft.Report.Components.StiSimpleText.SetTextTo(StiComponent comp, StiRuntimeVariables runtime, Object getValue, String value)
at Stimulsoft.Report.Components.StiSimpleText.SetText(Object getValue, String value)
at Stimulsoft.Report.Components.StiSimpleText.SetText(StiGetValue getValue)
at Reports.FAAPro.Page1__AfterPrint(Object sender, EventArgs e)
at Stimulsoft.Report.Components.StiComponent.InvokeAfterPrint(Object sender, EventArgs e)
at Stimulsoft.Report.Engine.StiEngine.InvokePageAfterPrint()
at Stimulsoft.Report.Engine.StiEngine.AddPageToRenderedPages(StiPage page)
at Stimulsoft.Report.Engine.StiEngine.NewPage(Boolean ignoreKeepContainers)
at Stimulsoft.Report.Engine.StiEngine.NewDestination(Boolean ignoreKeepContainers)
at Stimulsoft.Report.Engine.StiEngine.CheckFreeSpace(Double value)
at Stimulsoft.Report.Engine.StiEngine.CheckFreeSpace(StiContainer container)
at Stimulsoft.Report.Engine.StiEngine.InternalRenderContainer(StiContainer container, Boolean isPrintAtBottom, Boolean isFooterOnAllPages)
at Stimulsoft.Report.Engine.StiEngine.RenderContainer(StiContainer container, Boolean isPrintAtBottom, Boolean isFooterOnAllPages)
at Stimulsoft.Report.Engine.StiEngine.InternalRenderBand(StiBand band, Boolean ignorePageBreaks, Boolean allowRenderingEvents)
at Stimulsoft.Report.Engine.StiEngine.RenderBand(StiBand band, Boolean ignorePageBreaks, Boolean allowRenderingEvents)
at Stimulsoft.Report.Engine.StiDataBandV2Builder.RenderBand(StiDataBand masterDataBand, StiBand band, Boolean ignorePageBreaks, Boolean allowRenderingEvents)
at Stimulsoft.Report.Engine.StiDataBandV2Builder.RenderMaster(StiDataBand masterDataBand)
at Stimulsoft.Report.Components.StiDataBand.RenderMaster()
at Stimulsoft.Report.Engine.StiPageHelper.RenderPage(StiPage page)
at Stimulsoft.Report.Engine.StiRenderProviderV2.RenderReport(StiReport report, StiReport masterReport, StiRenderState state)
at Stimulsoft.Report.Engine.StiRenderProviderV2.Render(StiReport report, StiRenderState state)
at Stimulsoft.Report.Engine.StiReportV2Builder.RenderSingleReport(StiReport masterReport, StiRenderState renderState)
at Stimulsoft.Report.StiReport.RenderReport(StiRenderState renderState)
at Stimulsoft.Report.StiReport.Render(StiRenderState renderState, StiGuiMode guiMode)
at Stimulsoft.Report.StiReport.Render()
at StimulSoft.ReportHelper.RenderReport...
В ячейке используется следующее выражение для подсчета тоталов:
При работе в дизайнере с сгенерированным репортом таких проблем не возникает,
и пересоздание источников и реимпорт data, предварительно экспортированного в XSD и XML не вызывает никаких проблем.
Очевидно что исключение скорее всего вызвано тем что TotalsToDate.CustomField8 равно DBNull, но реально в датасете там 0.
Подскажите пожалуйста решение проблемы ибо поиски решения на форуме и всевозможные манипуляции с кодом ничего не дают.
И за почти 3 года работы с вашим продуктом это пожалуй первый момент, который вызывает реальное раздражение и недоумение.
Все необходимые файлы вы можете найти здесь: Report.rar
С уважением, Виталий
При удалении источников данных с помощью
Код: Выделить всё
report.Dictionary.Databases.Clear()
report.DataSources.Clear()
Код: Выделить всё
report.Dictionary.ImportXMLSchema(data)
report.RegData(data)
Operator '+' is not defined for type 'Decimal' and type 'DBNull'.
**************************************************************************************
Stack trace:
at Microsoft.VisualBasic.CompilerServices.Operators.AddObject(Object Left, Object Right)
at Reports.FAAPro.txtCustomFieldPreviousTotal8_GetValue_End(StiComponent sender)
at Stimulsoft.Report.Components.StiSimpleText.SetTextTo(StiComponent comp, StiRuntimeVariables runtime, Object getValue, String value)
at Stimulsoft.Report.Components.StiSimpleText.SetText(Object getValue, String value)
at Stimulsoft.Report.Components.StiSimpleText.SetText(StiGetValue getValue)
at Reports.FAAPro.Page1__AfterPrint(Object sender, EventArgs e)
at Stimulsoft.Report.Components.StiComponent.InvokeAfterPrint(Object sender, EventArgs e)
at Stimulsoft.Report.Engine.StiEngine.InvokePageAfterPrint()
at Stimulsoft.Report.Engine.StiEngine.AddPageToRenderedPages(StiPage page)
at Stimulsoft.Report.Engine.StiEngine.NewPage(Boolean ignoreKeepContainers)
at Stimulsoft.Report.Engine.StiEngine.NewDestination(Boolean ignoreKeepContainers)
at Stimulsoft.Report.Engine.StiEngine.CheckFreeSpace(Double value)
at Stimulsoft.Report.Engine.StiEngine.CheckFreeSpace(StiContainer container)
at Stimulsoft.Report.Engine.StiEngine.InternalRenderContainer(StiContainer container, Boolean isPrintAtBottom, Boolean isFooterOnAllPages)
at Stimulsoft.Report.Engine.StiEngine.RenderContainer(StiContainer container, Boolean isPrintAtBottom, Boolean isFooterOnAllPages)
at Stimulsoft.Report.Engine.StiEngine.InternalRenderBand(StiBand band, Boolean ignorePageBreaks, Boolean allowRenderingEvents)
at Stimulsoft.Report.Engine.StiEngine.RenderBand(StiBand band, Boolean ignorePageBreaks, Boolean allowRenderingEvents)
at Stimulsoft.Report.Engine.StiDataBandV2Builder.RenderBand(StiDataBand masterDataBand, StiBand band, Boolean ignorePageBreaks, Boolean allowRenderingEvents)
at Stimulsoft.Report.Engine.StiDataBandV2Builder.RenderMaster(StiDataBand masterDataBand)
at Stimulsoft.Report.Components.StiDataBand.RenderMaster()
at Stimulsoft.Report.Engine.StiPageHelper.RenderPage(StiPage page)
at Stimulsoft.Report.Engine.StiRenderProviderV2.RenderReport(StiReport report, StiReport masterReport, StiRenderState state)
at Stimulsoft.Report.Engine.StiRenderProviderV2.Render(StiReport report, StiRenderState state)
at Stimulsoft.Report.Engine.StiReportV2Builder.RenderSingleReport(StiReport masterReport, StiRenderState renderState)
at Stimulsoft.Report.StiReport.RenderReport(StiRenderState renderState)
at Stimulsoft.Report.StiReport.Render(StiRenderState renderState, StiGuiMode guiMode)
at Stimulsoft.Report.StiReport.Render()
at StimulSoft.ReportHelper.RenderReport...
В ячейке используется следующее выражение для подсчета тоталов:
Код: Выделить всё
{FormatForDisplay(cSumRunning(dbdDataBand,Flights.CustomField8)-cSum(dbdDataBand,Flights.CustomField8)+ TotalsToDate.CustomField8,BasicInformation.CustomFieldType8)}
и пересоздание источников и реимпорт data, предварительно экспортированного в XSD и XML не вызывает никаких проблем.
Очевидно что исключение скорее всего вызвано тем что TotalsToDate.CustomField8 равно DBNull, но реально в датасете там 0.
Подскажите пожалуйста решение проблемы ибо поиски решения на форуме и всевозможные манипуляции с кодом ничего не дают.
И за почти 3 года работы с вашим продуктом это пожалуй первый момент, который вызывает реальное раздражение и недоумение.
Все необходимые файлы вы можете найти здесь: Report.rar
С уважением, Виталий