Click here to Skip to main content
15,881,413 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
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:

C#
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
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

Does the InnerException give a better error message?
 
Share this answer
 

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



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900