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 { #region Public Fields /// /// encoding dei dati /// public string encoding; /// /// nome estensione /// public string fileNameExtension; /// /// mimeType del report /// public string mimeType; /// /// steam di bytes del report /// public byte[] renderedBytes; #endregion Public Fields #region Public Constructors /// /// metodo protected /// public reportExporter() { } #endregion Public Constructors #region Public Methods /// /// 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); } #endregion Public Methods #region Private Methods /// /// 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(); MapoDb.DataLayer DataLayerObj = new MapoDb.DataLayer(); switch (tipoReport) { case reportRichiesto.SchedaODL: tab = (DataTable)DataLayerObj.taODL.getByIdx(idxOdl, false); break; //case reportRichiesto.RichiestaIntervento: // tab = (DataTable)TA_app.obj.taInterventiMtz.getByIdx(Convert.ToInt32(idxObj)); // break; //default: // break; } return tab; } /// /// 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); } #endregion Private Methods }