Я пытаюсь получить средство просмотра отчетов о winforms для загрузки файла отчета о кристалле, когда я тестирую его на своей визуальной студии, он работает отлично, но как только я его опубликую, он дает мне это ошибкаКристальный отчет не загружается по опубликованному программному обеспечению
See the end of this message for details on invoking
Отладка точно в срок (JIT) вместо этого диалогового окна.
************** Исключительный текст ************** CrystalDecisions.Shared.CrystalReportsException: Ошибка загрузки отчета. ---> System.Runtime.InteropServices.COMException: Неподдерживаемая операция. Документ, обработанный механизмом JRC, не может быть открыт в стеке C++. в CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open (Object & DocumentPath, Int32 Options) в CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open (Object & DocumentPath, Int32 Options) на CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() - - Конец внутренней трассировки стека исключений --- в CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened() в CrystalDecisions.CrystalReports.Engine.ReportDocument.Load (String имя файла, OpenReportMethod openMethod, Int16 parentJob) в CrystalDecisions.CrystalReports.Engine. ReportDocument.Load (строка
Ниже мой код, используемый для загрузки файла отчета
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables;
PayrollRep payrollrep = new PayrollRep();
string myreportname = payrollrep.Name;
cryRpt.Load(Application.StartupPath + "\\PayrollRep.rpt");
////cryRpt.Load("PayrollRep.rpt");
crConnectionInfo.ServerName = "xxxxx";
crConnectionInfo.DatabaseName = "xxxx";
crConnectionInfo.UserID = "xxxx";
crConnectionInfo.Password = "xxxx";
CrTables = cryRpt.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
Я совершенно уверен, что он должен делать с каталогом нагрузки, так как он не встроен, но я не знаю, как правильно установить путь так что он находит файл после публикации.
я только что нашел свое решение по этому другому потоку https://stackoverflow.com/questions/10833894/a-document-processed-by-the-jrc-engine-cannot- be-open-in-the-c-stack –
спасибо, в любом случае, мне просто пришлось поместить построенное действие моего файла отчета в контент –