using Microsoft.Reporting.WinForms; using SteamWare; using System; using System.Data; /// /// Classe che restituisce uno stream ed i dati accessori per reinviare un report in pdf /// public class reportExporter { /// /// mimeType del report /// public string mimeType; /// /// encoding dei dati /// public string encoding; /// /// nome estensione /// public string fileNameExtension; /// /// steam di bytes del report /// public byte[] renderedBytes; /// /// metodo protected /// public reportExporter() { } /// /// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...) /// /// report ammessi: RichiestaIntervento /// num int mtz /// tabella dati private DataTable caricaDati(reportRichiesto tipoReport, string idxObj) { // calcolo idxODL int idxOdl = 0; try { idxOdl = Convert.ToInt32(idxObj); } catch { } DataTable tab = new DataTable(); switch (tipoReport) { case reportRichiesto.SchedaODL: tab = (DataTable)MapoDb.DataLayer.obj.taODL.getByIdx(idxOdl, false); break; //case reportRichiesto.RichiestaIntervento: // tab = (DataTable)TA_app.obj.taInterventiMtz.getByIdx(Convert.ToInt32(idxObj)); // break; //default: // break; } return tab; } /// /// renderizza il report in pdf /// /// report ammessi: RichiestaIntervento /// idx della richiesta (numIntMtz) /// public void popolaPdfStream(reportRichiesto tipoReport, string parametro) { LocalReport report = new LocalReport(); devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm"); switch (tipoReport) { case reportRichiesto.SchedaODL: report.ReportPath = @".\Reports\Donati_ODL.rdlc"; report.DataSources.Add(new ReportDataSource("MoonPro", caricaDati(tipoReport, parametro))); // OCCHIO!!! va messa sorgente dati CORRETTA deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm"); break; default: break; } createPdfStream(report, deviceInfo.xmlParam); } /// /// crea il vero e proprio stream pdf /// /// /// private void createPdfStream(LocalReport report, string deviceInfo) { // export in PDF string reportType = "PDF"; Warning[] warnings; string[] streams; renderedBytes = report.Render( reportType, deviceInfo, out mimeType, out encoding, out fileNameExtension, out streams, out warnings); } }