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

проблема с программным подключением DataSources

Добавлено: 10 апр 2012, 08:34
vitaliy_ds
Добрый день. Я использую .mrt файл в качестве шаблона, который правлю программно.
При удалении источников данных с помощью

Код: Выделить всё

                  report.Dictionary.Databases.Clear()
                  report.DataSources.Clear()
и последующем воссоздании их с помощью

Код: Выделить всё

                  report.Dictionary.ImportXMLSchema(data)
                  report.RegData(data)
в 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...

В ячейке используется следующее выражение для подсчета тоталов:

Код: Выделить всё

{FormatForDisplay(cSumRunning(dbdDataBand,Flights.CustomField8)-cSum(dbdDataBand,Flights.CustomField8)+ TotalsToDate.CustomField8,BasicInformation.CustomFieldType8)}
При работе в дизайнере с сгенерированным репортом таких проблем не возникает,
и пересоздание источников и реимпорт data, предварительно экспортированного в XSD и XML не вызывает никаких проблем.
Очевидно что исключение скорее всего вызвано тем что TotalsToDate.CustomField8 равно DBNull, но реально в датасете там 0.
Подскажите пожалуйста решение проблемы ибо поиски решения на форуме и всевозможные манипуляции с кодом ничего не дают.
И за почти 3 года работы с вашим продуктом это пожалуй первый момент, который вызывает реальное раздражение и недоумение.

Все необходимые файлы вы можете найти здесь: Report.rar

С уважением, Виталий

проблема с программным подключением DataSources

Добавлено: 12 апр 2012, 07:00
HighAley
Здравсатвуйте, Виталий.

1. Какое значение имеет pConfig.PublishPreviewMode?
2. report.SaveToString() следует писать со скобками.
3. Похоже, что значение TotalsToDate.CustomField8 = DBNull. Из-за этого и возникает исключение

Для более точного ответа пришлите, пожалуйста, простой рабочий проект, который воспроизводит проблему.

Спасибо.

проблема с программным подключением DataSources

Добавлено: 18 апр 2012, 20:11
vitaliy_ds
Добрый день, извините за задержку - проблема решилась, но к сожалению, "магическим" образом - при заполнении таблицы Flights реальными данными исключение не возникает. Но почему оно возникает на пустых данных при динамической генерации и в то же время не возникает в дизайнере при тех же данных все еще непонятно. Извините - рабочий проект не могу прислать ибо он очень большой, чтобы воссоздать проблему попробуйте пожалуйста подгрузить данные из ХМЛ файла в репорт файл и отрендерить программно (все файлы находятся в архиве) а потом повторить эти же манипуляции в дизайнере. Простой рабочий проект что воссоздает проблему попробую прислать позднее.

проблема с программным подключением DataSources

Добавлено: 23 апр 2012, 06:55
Ivan
Здравствуйте.

К сожалению, проблему воспроизвести не удалось.
Пришлите, пожалуйста, простой тестовый проект, который воспроизводит проблему.

Спасибо.