Ошибка при локальной обработке отчета reportviewer

I have a reportViewer that I want to print, and it’s working in my developing PC but when I deploy it to my client it says:
An error occurredd during local report processing .

My code is as follows:

        try
        {
            ReportParameter[] param = new ReportParameter[12];
            param[0] = new ReportParameter("p1", P1);
            param[1] = new ReportParameter("p2", P2);
            param[2] = new ReportParameter("p3", " ");
            param[3] = new ReportParameter("p4", " ");
            param[4] = new ReportParameter("p4", " ");
            param[5] = new ReportParameter("p5", " ");
            param[6] = new ReportParameter("p6", " ");
            param[7] = new ReportParameter("p7", " ");
            param[8] = new ReportParameter("p8", " ");
            param[9] = new ReportParameter("p9", " ");
            param[10] = new ReportParameter("p10", " ");
            param[11] = new ReportParameter("p11", P11);
            reportViewer1.Reset();
            reportViewer1.LocalReport.ReportPath = ConfigurationSettings.AppSettings["ReportPath"].ToString();//Application.StartupPath + "\\rptReport.rdlc";

            reportViewer1.LocalReport.SetParameters(param);

            Export(reportViewer1.LocalReport);
            Print();
            this.reportViewer1.RefreshReport();
            this.Close();
        }
        catch (Exception ex) {
            if (Convert.ToBoolean(ConfigurationSettings.AppSettings["debug"].ToString()) == true)
            {
                MessageBox.Show(ex.Message);
            }
        }

asked May 18, 2015 at 8:07

Diabolus's user avatar

DiabolusDiabolus

2682 silver badges15 bronze badges

5

Load 7 more related questions

Show fewer related questions

Студворк — интернет-сервис помощи студентам

периодически пытаюсь решить эту проблему и уже порядком задолбался, знаю что эта тема здесь крайне не популярна, 90% вопросов заданных остались без ответа, но попробую. Имеется отчет в проекте Report.rdlc, в нем одна таблица, при выводе постоянно получаю ошибку «Ошибка при локальной обработке отчета. Ссылка на объект не указывает на экземпляр объекта»
вот код которым пытаюсь прикрутить отчет к вьюверу:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
this.reportViewer1.LocalReport.DataSources.Clear();
            reportViewer1.Reset();
            reportViewer1.LocalReport.ReportEmbeddedResource = "Report.rdlc";
            SqlConnection con = new SqlConnection();
            con.ConnectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
            con.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select ... from akttableCLS";
            DataTable akttableCLS = new DataTable();
            akttableCLS.Load(cmd.ExecuteReader());
            con.Close();
            ReportDataSource rprtDTSource = new ReportDataSource();
            rprtDTSource.Name = "DataSet1";
            rprtDTSource.Value = akttableCLS;
            this.reportViewer1.LocalReport.DataSources.Add(rprtDTSource);
            this.reportViewer1.RefreshReport();

вот часть кода Report.rdlc

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
  <AutoRefresh>0</AutoRefresh>
  <DataSources>
    <DataSource Name="bbbDataSet">
      <ConnectionProperties>
        <DataProvider>System.Data.DataSet</DataProvider>
        <ConnectString>/* Local Connection */</ConnectString>
      </ConnectionProperties>
      <rd:DataSourceID>ab30b7d9-7917-440f-b697-ecedb23cd657</rd:DataSourceID>
    </DataSource>
    <DataSource Name="bbbiDataSet1">
      <ConnectionProperties>
        <DataProvider>System.Data.DataSet</DataProvider>
        <ConnectString>/* Local Connection */</ConnectString>
      </ConnectionProperties>
      <rd:DataSourceID>1b87092b-150a-4d68-94c8-7b62029a51fe</rd:DataSourceID>
    </DataSource>
  </DataSources>
  <DataSets>
    <DataSet Name="DataSet1">
      <Query>
        <DataSourceName>bbbiDataSet</DataSourceName>
        <CommandText>/* Local Query */</CommandText>

Добавлено через 5 часов 20 минут
может хотя бы кто подскажет что значит сия ошибка: «Метод не найден: SystemString Microsoft.ReportingSevices.DateTimeUtil.ParseDateToAdditionalSettingFormat(Sysye m.String.System.Gobalization.CultureInfo)??? она вылезла в окне report vyewer, мой код теперь выглядит так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
reportViewer1.ProcessingMode = ProcessingMode.Local;
 
            reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
 
            ReportDataSource rdS = new ReportDataSource("DataSet1", GetData());
 
            reportViewer1.LocalReport.DataSources.Add(rdS);
            this.reportViewer1.RefreshReport();
            DataTable GetData()
 
            {
 
                SqlDataAdapter dta = new SqlDataAdapter();
 
                SqlConnection con = new SqlConnection("SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";");
            
                DataSet ds = new DataSet();
 
                dta.SelectCommand = new SqlCommand("select from akttableCLS", con);
                
                dta.Fill(ds, "akttableCLS");
 
                return ds.Tables[0];
 
            }

Вопрос:

У меня есть ReportViewer в моем проекте. Когда я создаю .exe этого файла в InstallShield в Vsual Studio 2012, я добавляю в Redistributables Microsoft ReportViewer 2010.

Когда я устанавливаю свое приложение в Windows 8 – каждый ReportViewer отображает его отчет правильно.

У меня проблема с Windows XP ReportViewer загружается правильно, но отображает эту ошибку вместо правильного отчета:

Произошла ошибка при обработке локального отчета. Определение отчет “недействителен. Неожиданная ошибка, возникшая в отчете Обработка.

Не удалось загрузить файл или сборку Microsoft.ReportViewer.ProcessingObjectMode. Версия = 11.0.0., Культура = нейтральная, PublicKeyToken = 89845dc8080cc91 или одна из ее зависимостей. эта система не может найти указанный файл.

Я гарантирую вам, что в references I have added Microsoft.ReportViewer.Winfroms 11.0.0.0 и Copy Local = true.

Как я могу решить эту проблему?

Лучший ответ:

Узнал, что эта ошибка означает, что вам не хватает Microsoft.ReportViewer.PorcessingObjectMode.dll version 11.0.0.0. Существует одно решение:

На вашем компьютере Windows 8 выполните следующие действия:

  • Откройте команду командной строки dos (нажмите START + R, затем введите cmd и нажмите ENTER)

  • Введите cd .., пока вы не включите C:\ > Введите Cd windows\assembly\gac_msil\Microsoft.ReportViewer.pro* и нажмите enter

  • Просто введите cd 11*

  • Затем введите copy * c:\

  • .dll будет скопирован в ваш каталог C.

  • Этот файл просто скопируйте в Program Files на Windows XP machine в папку, где установлено ваше приложение.

Надеюсь, что это поможет другим, поскольку я долгое время рассматривал эту проблему.

Ответ №1

Я подтвердил ответ, помеченный как ответ, потому что я был, infact, missing.dlls, но я не исправил его так, как предложил @Marek. Я использую VS2013, и установка пакета Microsoft.Reporting nuget устраняет проблему. Я бы предложил любому, у кого эта проблема, попробовать это. Таким образом, вы автоматически получаете все зависимости.

enter image description here

Ответ №2

Марек ответ велик и помог мне, я просто хотел добавить дополнительный файл, который мне нужен. В дополнение к

Microsoft.ReportViewer.ProcessingObjectModel.dll

Мне также понадобилось

Microsoft.SqlServer.Types.dll

(Я запускаю это с сервера, на котором есть SQLServer, но не для служб Reporting Services, поэтому, возможно, почему второй файл отсутствовал.)

Как указывал Марек, вам нужно скопировать файл с помощью командной строки, потому что библиотеки DLL в GAC_MSIL скрыты из Проводника Windows, поэтому вы не увидите их, если их искать с помощью проводника.
Я был в тупике, потому что я создаю PDF файл с ежедневной задачей, поэтому все, что я видел в моем файле журнала, было загадочной ошибкой "An error occurred during local report processing." Я никогда не видел FaceViewer, что, по крайней мере, говорит вам пропавший файл.

Чтобы устранить эту проблему, я создал тестовую программу quickie и отобразил ReportViewer, что сделало более понятным, какие DLL мне нужны:
enter image description here

Ответ №3

Для начала

Это необходимо для установки пакетов nuget “Microsoft.Report.Viewer”, “ReportViewer.WebForms”, “Microsoft.ReportViewer.WinForms”, а также “Microsoft.SqlServer.Types”.

https://www.nuget.org/packages/ReportViewer.WebForms/

https://www.nuget.org/packages/Microsoft.ReportViewer.WinForms/

https://www.nuget.org/packages/Microsoft.Report.Viewer/

https://www.nuget.org/packages/Microsoft.SqlServer.Types/

Затем следует проверить web.config на наличие каких-либо тегов.

<system.web>
<compilation debug="true" targetFramework="4.5">
<buildProviders>
<add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
</buildProviders>
<assemblies>
<add assembly="Microsoft.ReportViewer.Common, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
<add assembly="Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
</assemblies>
</compilation>
<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" validate="false" />
    <assemblyBinding>
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<system.webServer>
<handlers>
<add name="ReportViewerWebControlHandler" verb="*" path="Reserved.ReportViewerWebControl.axd" preCondition="integratedMode" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" />
</handlers>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

У меня есть приложение VB, которое будет использовать .rdl для создания отчетов в формате PDF с помощью Microsoft.ReportViewer.WinForms.

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

У нас есть несколько клиентов, использующих одно и то же приложение с одинаковыми отчетами rdl. Но один из клиентов продолжает получать проблему, когда планировщик задач запускает приложение, в то время как другие работают нормально.

Приложение в основном генерирует 11 отчетов каждый день по утрам, но 1 из отчетов продолжает выдавать исключение всякий раз, когда планировщик задач запускает его утром.

Microsoft.Reporting.WinForms.LocalProcessingException: при обработке локального отчета произошла ошибка. Microsoft.Reporting.DefinitionInvalidException: определение отчета «xxx.rdl» недопустимо.

Но когда мы не смогли воспроизвести проблему, когда мы запускаем планировщик задач или запускаем программу вручную после этого.

Полный стек ошибок:

Error Message : Microsoft.Reporting.WinForms.LocalProcessingException: An error occurred during local report processing. ---> Microsoft.Reporting.DefinitionInvalidException: The definition of the report 'D:\EASI\AutoReport\SSRSReport\Report\1tic_movie_tax_report.rdl' is invalid. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: An unexpected error occurred in Report Processing. ---> System.Runtime.InteropServices.COMException: Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED))
   at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl)
   at System.Security.Policy.PEFileEvidenceFactory.GenerateLocationEvidence()
   at System.Security.Policy.PEFileEvidenceFactory.GenerateEvidence(Type evidenceType)
   at System.Security.Policy.AssemblyEvidenceFactory.GenerateEvidence(Type evidenceType)
   at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type)
   at System.Security.Policy.Evidence.GetHostEvidence(Type type, Boolean markDelayEvaluatedEvidenceUsed)
   at System.Security.Policy.AppDomainEvidenceFactory.GenerateEvidence(Type evidenceType)
   at System.Security.Policy.Evidence.GetHostEvidenceNoLock(Type type)
   at System.Security.Policy.Evidence.RawEvidenceEnumerator.MoveNext()
   at System.Security.Policy.Evidence.EvidenceEnumerator.MoveNext()
   at System.Configuration.ClientConfigPaths.GetEvidenceInfo(AppDomain appDomain, String exePath, String& typeName)
   at System.Configuration.ClientConfigPaths.GetTypeAndHashSuffix(AppDomain appDomain, String exePath)
   at System.Configuration.ClientConfigPaths..ctor(String exePath, Boolean includeUserConfig)
   at System.Configuration.ClientConfigPaths.GetPaths(String exePath, Boolean includeUserConfig)
   at System.Configuration.ClientConfigurationHost.RequireCompleteInit(IInternalConfigRecord record)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at System.Xml.Schema.Parser..ctor(SchemaType schemaType, XmlNameTable nameTable, SchemaNames schemaNames, ValidationEventHandler eventHandler)
   at System.Xml.Schema.XmlSchema.Read(XmlReader reader, ValidationEventHandler validationEventHandler)
   at Microsoft.ReportingServices.RdlObjectModel2005.Upgrade.UpgradeSerializerSettings2005.CreateReaderSettings()
   at Microsoft.ReportingServices.RdlObjectModel2005.Upgrade.UpgradeImpl2005.CreateReaderSettings()
   at Microsoft.ReportingServices.ReportProcessing.RDLUpgrader.RdlUpgrader.UpgradeFrom200501(XmlReader xmlReader, Boolean throwUpgradeException, Boolean upgradeDundasCRIToNative, Boolean renameInvalidDataSources, RDLUpgradeResult& upgradeResults)
   at Microsoft.ReportingServices.ReportProcessing.RDLUpgrader.RdlUpgrader.UpgradeUnified(Stream stream, XmlReader xmlReader, String namespaceURI, Boolean throwUpgradeException, Boolean upgradeDundasCRIToNative, Boolean renameInvalidDataSources, RDLUpgradeResult& upgradeResults)
   at Microsoft.ReportingServices.ReportProcessing.RDLUpgrader.RdlUpgrader.Upgrade(Stream stream, Boolean throwUpgradeException, Boolean upgradeDundasCRIToNative, Boolean renameInvalidDataSources, RDLUpgradeResult& upgradeResults)
   at Microsoft.ReportingServices.ReportProcessing.RDLUpgrader.UpgradeToCurrent(Stream stream, Boolean throwUpgradeException, Boolean renameInvalidDataSources, RDLUpgradeResult& upgradeResults)
   at Microsoft.ReportingServices.ReportPublishing.RdlObjectModelUpgradeStrategy.Upgrade(Stream definitionStream)
   at Microsoft.ReportingServices.ReportPublishing.ReportPublishing.Phase1(Stream definitionStream, String& description, String& language, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, Boolean& hasExternalImages, Boolean& hasHyperlinks)
   at Microsoft.ReportingServices.ReportPublishing.ReportPublishing.InternalCreateIntermediateFormat(Stream definitionStream, String& description, String& language, ParameterInfoCollection& parameters, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, UserLocationFlags& userReferenceLocation, ArrayList& dataSetsName, Boolean& hasExternalImages, Boolean& hasHyperlinks, Byte[]& dataSetsHash)
   at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CompileOdpReport(PublishingContext reportPublishingContext, IDataProtection dataProtection, PublishingErrorContext errorContext, String& reportDescription, String& reportLanguage, ParameterInfoCollection& parameters, DataSourceInfoCollection& dataSources, DataSetInfoCollection& sharedDataSetReferences, UserLocationFlags& userReferenceLocation, ArrayList& dataSetsName, Boolean& hasExternalImages, Boolean& hasHyperlinks, Byte[]& dataSetsHash)
   at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(PublishingContext reportPublishingContext, IDataProtection dataProtection)
   --- End of inner exception stack trace ---
   at Microsoft.ReportingServices.ReportProcessing.ReportProcessing.CreateIntermediateFormat(PublishingContext reportPublishingContext, IDataProtection dataProtection)
   at Microsoft.Reporting.ReportCompiler.CompileReport(ICatalogItemContext context, Byte[] reportDefinition, Boolean generateExpressionHostWithRefusedPermissions, ControlSnapshot& snapshot)
   --- End of inner exception stack trace ---
   at Microsoft.Reporting.ReportCompiler.CompileReport(ICatalogItemContext context, Byte[] reportDefinition, Boolean generateExpressionHostWithRefusedPermissions, ControlSnapshot& snapshot)
   at Microsoft.Reporting.LocalService.GetCompiledReport(PreviewItemContext itemContext, Boolean rebuild, ControlSnapshot& snapshot)
   at Microsoft.Reporting.LocalService.CompileReport()
   at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
   --- End of inner exception stack trace ---
   at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
   at Microsoft.Reporting.WinForms.LocalReport.GetParameters()
   at SSRSReport.frmSsrsReport.SetReportParameter(String ReportTitle)
   at SSRSReport.frmSsrsReport.ViewReport(Boolean showSplash)
   at SSRSReport.frmMain.GenerateAutoReports(DateTime selectedDate)

Код:

1. rptViewer.LocalReport.ReportPath = fileName : executed on function [SSRSReport.frmSsrsReport.ViewReport]
2. rptViewer.LocalReport.GetParameters() : executed on function [SSRSReport.frmSsrsReport.SetReportParameter]

Шустрый
*

Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет

Добрый день!

Создал отчет стандартными средствами MS Visual Studio 2008.

В отчете сделал 2 параметра, значение которых хочу задавать перед отображением отчета.

Вот кусок кода:

Код

// Диалоговое окно с компонентом предварительного просмотра отчета ReportViewer
ReportPreview preview = new ReportPreview();

// Указываем, какой отчет отображать в предпросмотре
preview.reportViewer1.LocalReport.ReportEmbeddedResource = "AZMK.ReportNormaRas.rdlc";

// Создаем параметры. "ch_num" и "product_name" - имена параметров в отчете
ReportParameter param1 = new ReportParameter("ch_num", "Aaaaaaa");
ReportParameter param2 = new ReportParameter("product_name", "Bbbbbbb");

// Передаем значения параметров в отчет
preview.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { param1, param2 });

// Отображаем диалоговое окно
preview.ShowDialog();

В MSDN приведен такого же рода пример.

Когда выполнение программы доходит до строки передачи значений параметров в отчет, то выскакивает ошибка «Ошибка при локальной обработке отчета».

Помогите разобраться с этой ошибкой и ее устранением.

Понравилась статья? Поделить с друзьями:
  • Ошибка при ловле баскетбольного мяча является
  • Ошибка при лечении пульпита биологическим методом является тест
  • Ошибка при копировании файла устройство не готово
  • Ошибка при копировании файла параметр задан неверно
  • Ошибка при лайке вконтакте