An error occurred during report processing. -RLDC reporting in ASP.NET MVC

后端 未结 3 872
野趣味
野趣味 2020-11-27 22:59

I have this action to generate reports :

  public ActionResult Report(string id)
        {
            LocalReport lr = new LocalReport();
            strin         


        
相关标签:
3条回答
  • 2020-11-27 23:36

    Have you try like this after adding a TableAdapter? It is working perfectly for me.

    public FileResult Report(string id)
    {
        PersonTableAdapter ta = new PersonTableAdapter();
        PersonDataSet ds = new PersonDataSet();
    
        //for avoiding "Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints." error
        ds.Person.Clear();
        ds.EnforceConstraints = false;
    
        ta.Fill(ds.Person, id); //You might customize your data at this step i.e. applying a filter
    
        ReportDataSource rds = new ReportDataSource();
        rds.Name = "ReportingDataSet";
        rds.Value = ds.Person;
    
        ReportViewer rv = new Microsoft.Reporting.WebForms.ReportViewer();
        rv.ProcessingMode = ProcessingMode.Local;
        rv.LocalReport.ReportPath = Server.MapPath("~/Report/Person.rdlc");
    
        // Add the new report datasource to the report.
        rv.LocalReport.DataSources.Add(rds);
        rv.LocalReport.EnableHyperlinks = true;
        rv.LocalReport.Refresh();
    
        byte[] streamBytes = null;
        string mimeType = "";
        string encoding = "";
        string filenameExtension = "";
        string[] streamids = null;
        Warning[] warnings = null;
    
        streamBytes = rv.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings);
    
        return File(streamBytes, mimeType, "Person" + "_" + id + ".pdf");
    }
    

    Hope this helps...

    0 讨论(0)
  • 2020-11-27 23:41

    I'm not sure which one will help you, so I list them as following:

    1. Try removing the datasource from the Report menu and then adding it again
    2. Check Render function requirements before action, so you may wanna check in and out parameter values.
    3. Try to see some examples around LocalReporter to be more aware how to use this tool.

    And Finally, The line which throws exception is not the same as main code, since you place null instead of deviceInfo! regards.

    0 讨论(0)
  • 2020-11-27 23:45

    My solution for rdlc is based on ReportViewer.

            byte[] bytes = null;
            string attachmentName = string.Empty;
    
            Warning[] warnings;
            string[] streamids;
            string mimeType;
            string encoding;
            string extension;
            /*GetReportDataSources(logicResult, spec);*/
            var reportPath = GetReportExecutionPath();
    
            ReportViewer viewer = new ReportViewer();
            /*viewer.LocalReport.SubreportProcessing +=
                new Microsoft.Reporting.WinForms.SubreportProcessingEventHandler(LocalReport_SubreportProcessing);*/
            viewer.LocalReport.ReportPath = reportPath;
            /*viewer.LocalReport.SetParameters(parameters);*/
            viewer.LocalReport.EnableExternalImages = true;
            viewer.RefreshReport();
    
            viewer.LocalReport.DisplayName = "displayName";
            bytes = viewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension,
                out streamids, out warnings);
    

    /*some logic */

            return new StreamResponse(() =>
            {
                var pdfOutput = new MemoryStream(bytes); 
                pdfOutput.Seek(0, SeekOrigin.Begin);
                return pdfOutput;
            }, "application/pdf").WithHeader("Content-Disposition", "attachment; filename=" + attachmentName);
    

    You need also add report path, and datasources (my solution is complicated, and I use for that LocalReport_SubreportProcessing).

    P.S. Using rdlc with ASP.MVC have 1 issue. You need set on ISS App Pool "Identity = LocalSystem", that is ok in Intranet, but not ok in Internet.

    0 讨论(0)
提交回复
热议问题