Это сломало мне голову за одну ночь. Не удалось получить помощь на предыдущих форумах.
Мое приложение работает на других компьютерах без проблем, теперь оно установлено на пяти клиентах без проблем. На этом новом компьютере я получаю «Ошибка загрузки отчета» при открытии отчета. После этого он просто оставляет CR Viewer пустым.
ОБНОВЛЕНИЕ: Я проверил разрешения, приложение может создавать временные файлы во временной папке. Но на моем компьютере разработчика он создает 2 файла (другой файл содержит фигурные скобки), на этом конкретном клиентском компьютере (где возникает ошибка) он создает только один файл.
Я копирую содержимое папки bin на клиентские компьютеры. Для отчетов установлено значение Встроенный ресурс для Действие построения и Не копировать для Копировать в выходной каталог . Эти параметры работали без проблем на других клиентских компьютерах. Я ничего не изменил в коде получения отчетов.
Это пример кода, который я использовал:
Try
Dim CR As New CRInventory
CR.SetDataSource(DataTable)
CR.SetParameterValue("GeneratedBy", ActiveStaffMember.Fullname)
CR.SetParameterValue("BusinessDetails", BusinessName & ", " & BusinessAddress)
CR.SetParameterValue("ReportDate", ReportDate)
CRV.ReportSource = CR
Catch ex As TypeInitializationException
ShowApplicationRuntimeErrorNotebox("LoadReport TypeInitializationException", ex.InnerException.Message)
Catch ex As Exception
ShowApplicationRuntimeErrorNotebox("LoadReport", ex.Message)
End Try
Так что нового в этом компьютере? Я не знаю, у него последнее Windows обновление, я думаю?
Любая помощь подойдет, пожалуйста Я близок к тому, чтобы выбросить этот новый компьютер из окна.
ОБНОВЛЕНИЕ: Использовано ex.tostring вместо ex.Message каким-то образом поймать ошибку (спасибо Себу), и это вышло:
CrystalDecisions.Shared.CrystalReportsException: Load report failed. ---> System.Runtime.InteropServices.COMException: The document has not been opened.
at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.get_ReportAppServer()
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.get_ReportAppServer()
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
--- End of inner exception stack trace ---
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.EnsureLoadReport()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSourceInternal(Object val, Type type)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(DataTable dataTable)
at Iceberg.FItemInventoryReportB.LoadReport() in D:\Documents\Iceberg\Iceberg VS2017\Iceberg\Forms\Items\Inventory\Inventory Transactions\FItemInventoryReportB.vb:line 38
ОБНОВЛЕНИЕ: Использовано procmon.exe для мониторинга активности файловой системы приложения во время отчета погрузка. Все результаты УСПЕХ . Если только я не лаю не на то дерево.