2016-04-25 5 views
0

Я пытаюсь получить средство просмотра отчетов о 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(); 

Я совершенно уверен, что он должен делать с каталогом нагрузки, так как он не встроен, но я не знаю, как правильно установить путь так что он находит файл после публикации.

ответ

0

попытайтесь установить время выполнения на машине, где вы хотите запустить приложение.

32 bit

64 bit

+0

я только что нашел свое решение по этому другому потоку https://stackoverflow.com/questions/10833894/a-document-processed-by-the-jrc-engine-cannot- be-open-in-the-c-stack –

+0

спасибо, в любом случае, мне просто пришлось поместить построенное действие моего файла отчета в контент –

Смежные вопросы