I am trying to generate 10 reports one by one taking data from database and then trying to merge all into one output pdf. I have a design in a.rdlc form. Here is my C# code:
var db = Database.Open("dbConnection");
var data = db.QuerySingle("select name from customer_table where id = 2");
Microsoft.Reporting.WebForms.ReportViewer RptVr = new Microsoft.Reporting.WebForms.ReportViewer();
RptVr.LocalReport.ReportPath = "~/report/a.rdlc";
RptVr.LocalReport.EnableExternalImages = true;
Microsoft.Reporting.WebForms.ReportParameter[] x = new Microsoft.Reporting.WebForms.ReportParameter[1];
var fname = "";
fname = "inline; filename=reportCard" + a + ".pdf";
x[0] = new Microsoft.Reporting.WebForms.ReportParameter("Name", data.name);
RptVr.LocalReport.SetParameters(x);
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>11in</PageWidth>" +
" <PageHeight>8.5in</PageHeight>" +
" <MarginTop>0in</MarginTop>" +
" <MarginLeft>0in</MarginLeft>" +
" <MarginRight>0in</MarginRight>" +
" <MarginBottom>0in</MarginBottom>" +
"</DeviceInfo>";
Byte[] results = RptVr.LocalReport.Render("PDF", deviceInfo);
Response.ContentType = "Application/pdf";
Response.AddHeader("content-disposition", fname);
Response.OutputStream.Write(results, 0, results.Length);
this is working but when i try to loop like below, i know there is something wrong. I tried to generate the report in a loop and get one pdf output file.
var db = Database.Open("dbConnection");
var data = db.Query("select name from customer_table");
for(i = 0; i<data.length;i++)
{
Microsoft.Reporting.WebForms.ReportViewer RptVr = new Microsoft.Reporting.WebForms.ReportViewer();
RptVr.LocalReport.ReportPath = "~/report/a.rdlc";
RptVr.LocalReport.EnableExternalImages = true;
Microsoft.Reporting.WebForms.ReportParameter[] x = new Microsoft.Reporting.WebForms.ReportParameter[1];
var fname = "";
fname = "inline; filename=reportCard" + a + ".pdf";
x[0] = new Microsoft.Reporting.WebForms.ReportParameter("Name", data.name);
RptVr.LocalReport.SetParameters(x);
string deviceInfo =
"<DeviceInfo>" +
" <OutputFormat>EMF</OutputFormat>" +
" <PageWidth>11in</PageWidth>" +
" <PageHeight>8.5in</PageHeight>" +
" <MarginTop>0in</MarginTop>" +
" <MarginLeft>0in</MarginLeft>" +
" <MarginRight>0in</MarginRight>" +
" <MarginBottom>0in</MarginBottom>" +
"</DeviceInfo>";
Byte[] results = RptVr.LocalReport.Render("PDF", deviceInfo);
Response.ContentType = "Application/pdf";
Response.AddHeader("content-disposition", fname);
Response.OutputStream.Write(results, 0, results.Length);
i++;
}
Please help how do i do that.
What I have tried:
I tried to generate reports dynamically one by one in a loop and try to put that in one pdf file