Click here to Skip to main content
13,589,560 members
Rate this:
 
Please Sign up or sign in to vote.
See more:
Hey
I am working on rdlc reports I have a button on my page and when this is clicked pdf is shown not the report in report viewer.It works fine but when i add parameters to report it works well in report viewer pdf is also generated but when i try to generate pdf without report viewer code gives error: An error ocuured while local report processing.

Code given below:

private void CreatePDF(string id, string pid)
       {
           string issalaried = "";
           DataSet DsRep = getemplyeebasicdetail(id, pid);
           DataSet dssalaryDetails = getemplyeesalarydetail(id, pid);
           DataSet dsEmployeeCount = GetEmplyoeeCount(id, pid);
           int rowcount = dssalaryDetails.Tables[0].Rows.Count;
           if (rowcount == 0)
           {
               DataRow dr = dssalaryDetails.Tables[0].NewRow();
               dssalaryDetails.Tables[0].Rows.Add(dr);
           }
           else
           {
               Boolean salaried = false;
               foreach (DataRow dr in dssalaryDetails.Tables[0].Rows)
               {
                   if (dr["issalaried"].ToString() == "Y")
                   {
                       salaried = true;
                   }
               }
               if (salaried == false)
               {
                   issalaried = "N";
               }
               else
               {
                   issalaried = "Y";
               }
           }
           ReportDataSource datasource = new ReportDataSource("DS1", DsRep.Tables[0]);
           ReportDataSource datasourcefamily = new ReportDataSource("DS2", dssalaryDetails.Tables[0]);
           ReportDataSource datasourcecount = new ReportDataSource("DS3", dsEmployeeCount.Tables[0]);
           ReportParameter[] Param = new ReportParameter[1];
           Param[0] = new ReportParameter("Param_IsSalaried", issalaried);
           Warning[] warnings;
           string[] streamIds;
           string mimeType = string.Empty;
           string encoding = string.Empty;
           string extension = string.Empty;
           // Setup the report viewer object and get the array of bytes
           ReportViewer viewer = new ReportViewer();
           viewer.ProcessingMode = ProcessingMode.Local;
           viewer.LocalReport.ReportPath = Server.MapPath("~\\Employee.rdlc");
           //Datasource
           viewer.LocalReport.DataSources.Add(datasource);
           viewer.LocalReport.SetParameters(Param);
           viewer.LocalReport.EnableExternalImages = true;
           byte[] bytes = viewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);

           // Now that you have all the bytes representing the PDF report, buffer it and send it to the client.
           Response.Buffer = true;
           Response.Clear();
           Response.ContentType = mimeType;
           Response.AddHeader("content-disposition", "attachment; filename=" + "Employee" + "." + extension);
           Response.BinaryWrite(bytes); // create the file
           Response.Flush(); // send it to the client to download
           //Page settings for PDF File.

       }
Posted 21-Jun-12 6:23am
Updated 21-Jun-12 20:39pm
v2
Comments
Sandeep Mewara 21-Jun-12 15:16pm
   
"An error ocuured while local report processing" is not enough to suggest about the issue. You need to share more, may be related code snippet? Look in event log and SSRS logs to see what went wrong and share those.
Pratika05 22-Jun-12 1:07am
   
My code is:

private void CreatePDF(string id, string pid)
{
string issalaried = "";
DataSet DsRep = getemplyeebasicdetail(id, pid);
DataSet dssalaryDetails = getemplyeesalarydetail(id, pid);
DataSet dsEmployeeCount = GetEmplyoeeCount(id, pid);
int rowcount = dssalaryDetails.Tables[0].Rows.Count;
if (rowcount == 0)
{
DataRow dr = dssalaryDetails.Tables[0].NewRow();
dssalaryDetails.Tables[0].Rows.Add(dr);
}
else
{
Boolean salaried = false;
foreach (DataRow dr in dssalaryDetails.Tables[0].Rows)
{
if (dr["issalaried"].ToString() == "Y")
{
salaried = true;
}
}
if (salaried == false)
{
issalaried = "N";
}
else
{
issalaried = "Y";
}

}
ReportDataSource datasource = new ReportDataSource("DS1", DsRep.Tables[0]);
ReportDataSource datasourcefamily = new ReportDataSource("DS2", dssalaryDetails.Tables[0]);
ReportDataSource datasourcecount = new ReportDataSource("DS3", dsEmployeeCount.Tables[0]);
ReportParameter[] Param = new ReportParameter[1];
Param[0] = new ReportParameter("Param_IsSalaried", issalaried);

Warning[] warnings;
string[] streamIds;
string mimeType = string.Empty;
string encoding = string.Empty;
string extension = string.Empty;
// Setup the report viewer object and get the array of bytes
ReportViewer viewer = new ReportViewer();
viewer.ProcessingMode = ProcessingMode.Local;
viewer.LocalReport.ReportPath = Server.MapPath("~\\Employee.rdlc");
//Datasource
viewer.LocalReport.DataSources.Add(datasource);
viewer.LocalReport.SetParameters(Param);
viewer.LocalReport.EnableExternalImages = true;
byte[] bytes = viewer.LocalReport.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);



// Now that you have all the bytes representing the PDF report, buffer it and send it to the client.
Response.Buffer = true;
Response.Clear();
Response.ContentType = mimeType;
Response.AddHeader("content-disposition", "attachment; filename=" + "Employee" + "." + extension);
Response.BinaryWrite(bytes); // create the file
Response.Flush(); // send it to the client to download

//Page settings for PDF File.


}
Pratika05 22-Jun-12 1:08am
   
At line viewer.LocalReport.SetParameters(Param); it gives error if i rempve it everything works fine.
rohit24c 2-Aug-12 3:40am
   
Thats fine when you're using reportViewer but how to save the rdlc files directly as .pdf.
Any suggestions plz

1 solution

Rate this: bad
 
good
Please Sign up or sign in to vote.

Solution 1

Does the InnerException give a better error message?
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


Advertise | Privacy | Cookies | Terms of Service
Web01-2016 | 2.8.180615.1 | Last Updated 26 Feb 2015
Copyright © CodeProject, 1999-2018
All Rights Reserved.
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100