private void RenderizarRelatorios() { string serializedObject; string strDecompressedString; RGSws.RGSWsSoapClient _wsRGS = new RGSws.RGSWsSoapClient(); ReportsContainer reportContainer = new ReportsContainer(); //reportContainer.CredentialType = CredentialType.NetworkCredential; //reportContainer.ReportServiceUrl = "http://wibr001505/ReportServer/ReportService2005.asmx"; //reportContainer.ReportExecutionUrl = "http://wibr001505/ReportServer/ReportExecution2005.asmx"; //ReportContainer/////////////////////////////////////////////////////////////////////////////// reportContainer.CredentialType = CredentialType.CustomCredential; reportContainer.ReportUserLogin = "******"; reportContainer.ReportUserPassword = "******"; reportContainer.NetworkDomain = "ReportServiceNetworkDomain"; reportContainer.ReportServiceUrl = "http://192.168.0.120/ReportServer/ReportService2005.asmx"; reportContainer.ReportExecutionUrl = "http://192.168.0.120/ReportServer/ReportExecution2005.asmx"; reportContainer.LogReports = true; //////////////////////////////////////////////////////////////////////////////////////////////// //Report//////////////////////////////////////////////////////////////////////////////////////// Report report = new Report(); report.ReportName = "REPORTS/TESTS/MyReport"; report.ReportFormat = ReportFormat.EXCEL; report.Parameters.Add("Param1", "2012-01-01"); report.Parameters.Add("Param2", "value"); report.StoreReportInDB = true; //////////////////////////////////////////////////////////////////////////////////////////////// reportContainer.Reports.Add(report); serializedObject = JsonHelper.ConvertToJSON(reportContainer); strDecompressedString = GZipHelper.Decompress(_wsRGS.RenderReports(serializedObject)); Feedback _feed = JsonHelper.ConvertToObject<Feedback>(strDecompressedString); if (_feed.Status == Feedback.TypeFeedback.Success) { txtResultado.Text = strDecompressedString; reportContainer = JsonHelper.ConvertToObject<ReportsContainer>(_feed.Output.ToString()); if (reportContainer.Reports[0].ReportGenerationStatus) GeraArquivo(reportContainer.Reports[0].ReportFile, true); else txtResultado.Text = reportContainer.Reports[0].ReportErrorDescription; } else txtResultado.Text = _feed.Message[0]; }
public ReportsContainer RenderReports(ReportsContainer reportsContainer) { if (string.IsNullOrEmpty(reportsContainer.ReportServiceUrl) || string.IsNullOrEmpty(reportsContainer.ReportExecutionUrl)) { throw new Exception("Atributos ReportServicesUrl e ReportExecutionUrl devem ser definidos"); } //Instancia as classes do ReportingService _rsService = new ReportingService2005(); _rsExecution = new ReportExecutionService(); if (reportsContainer.CredentialType == CredentialType.DefaultCredential ) { _rsService.Credentials = CredentialCache.DefaultCredentials; _rsExecution.Credentials = CredentialCache.DefaultCredentials; } else if(reportsContainer.CredentialType == CredentialType.NetworkCredential) { _rsService.Credentials = CredentialCache.DefaultNetworkCredentials; _rsExecution.Credentials = CredentialCache.DefaultNetworkCredentials; } else { _credential = new NetworkCredential { UserName = reportsContainer.ReportUserLogin, Password = reportsContainer.ReportUserPassword, Domain = reportsContainer.NetworkDomain }; _rsService.Credentials = _credential; _rsExecution.Credentials = _credential; } //Define a URL do Servidor que vai gerar o relatório _rsService.Url = reportsContainer.ReportServiceUrl; _rsExecution.Url = reportsContainer.ReportExecutionUrl; if (reportsContainer.LogReports) { SaveReportsContainerInformation(reportsContainer); reportsContainer.Reports.ForEach(r => r.ReportsContainerGuid = reportsContainer.ReportsContainerGuid); } for (int i = 0; i < reportsContainer.Reports.Count; i++ ) { Report report = reportsContainer.Reports[i]; try { report = RenderReportItem(reportsContainer, report); } catch (Exception ex) { report.ReportGenerationStatus = false; report.ReportErrorDescription = ex.ToString(); UpdateReportStatus(report); } } return reportsContainer; }
private void SaveReportsContainerInformation(ReportsContainer reportsContainer) { _sqlDAc = new SqlDataAccess(_connectionString); _sqlValues = new Dictionary<string, object>(); reportsContainer.ReportsContainerGuid = Guid.NewGuid(); _sqlValues.Add("@ReportsContainerGUID", reportsContainer.ReportsContainerGuid); _sqlValues.Add("@jsonReportsContainer", JsonHelper.ConvertToJSON(reportsContainer)); _sqlValues.Add("@NetworkDomain", reportsContainer.NetworkDomain); _sqlValues.Add("@ReportUserLogin", reportsContainer.ReportUserLogin); _sqlValues.Add("@ReportUserPassword", reportsContainer.ReportUserPassword); _sqlValues.Add("@ReportServiceUrl", reportsContainer.ReportServiceUrl); _sqlValues.Add("@ReportExecutionUrl", reportsContainer.ReportExecutionUrl); _sqlCommand = "SaveReportContainerInformation"; _sqlDAc.ExecuteByStoredProc(SqlDataAccess.ReturnType.NonQuery, _sqlCommand, ref _sqlValues); }
private void SaveReportInformation(Report report, ReportsContainer reportsContainer) { _sqlDAc = new SqlDataAccess(_connectionString); _sqlValues = new Dictionary<string, object>(); _sqlValues.Add("@jsonReport", JsonHelper.ConvertToJSON(report)); _sqlValues.Add("@ReportName", report.ReportName); _sqlValues.Add("@reportsContainerGUID", reportsContainer.ReportsContainerGuid); if (report.ReportGuid != new Guid()) _sqlValues.Add("@reportGUID", report.ReportGuid); _sqlCommand = "SaveReportInformation"; var result = _sqlDAc.ExecuteByStoredProc(SqlDataAccess.ReturnType.Scalar, _sqlCommand, ref _sqlValues); report.ReportGuid = new Guid(result.ToString()); }
private Report RenderReportItem(ReportsContainer reportsContainer, Report reportItem) { try { byte[] reportFile = null; string ReportDbFilestreamPathName = string.Empty; //Verificando se o arquivo será armazenado no BD para gerar seu GUID e seu DBPathName (necessário para o filestream) if (reportItem.StoreReportInDB) { //Instanciando a classe BDFileStream _dbFileStream = new BDFileStream.BDFileStream(_fsConnectionString); Dictionary<string, string> placeholderInfo = _dbFileStream.GenerateFilePlaceholder(); reportItem.ReportGuid = new Guid(placeholderInfo["GUIDFile"]); ReportDbFilestreamPathName = placeholderInfo["bdPathName"]; } if (reportsContainer.LogReports) { //Salva as informações sobre o relatório no Banco de dados SaveReportInformation(reportItem, reportsContainer); } //Renderiza o relatório reportFile = RenderReport(reportItem); //Define a variável do status de renderização do relatório reportItem.ReportGenerationStatus = true; if (reportItem.StoreReportInDB) { //Utilizando o método que armazena o relatório no SQL _dbFileStream.StoreFileByDbPathName(reportFile, ReportDbFilestreamPathName); } if (reportsContainer.LogReports) { //Atualiza o status do relatório UpdateReportStatus(reportItem); } //Armazena o arquivo no objeto Report reportItem.ReportFile = reportFile; } catch(Exception ex) { if (reportItem.StoreReportInDB && reportItem.ReportGuid != new Guid()) _dbFileStream.DeleteFileByGuid(reportItem.ReportGuid); throw ex; } return reportItem; }
private byte[] RenderReport(ReportsContainer reportsContainer, Report report) { byte[] reportFile = null; string ReportDbFilestreamPathName = string.Empty; if (string.IsNullOrEmpty(reportsContainer.ReportServiceUrl) || string.IsNullOrEmpty(reportsContainer.ReportExecutionUrl)) { throw new Exception("Atributos ReportServicesUrl e ReportExecutionUrl devem ser definidos"); } //Instancia as classes do ReportingService _rsService = new ReportingService2005(); _rsExecution = new ReportExecutionService(); if (reportsContainer.CredentialType == CredentialType.DefaultCredential) { _rsService.Credentials = CredentialCache.DefaultCredentials; _rsExecution.Credentials = CredentialCache.DefaultCredentials; } else if (reportsContainer.CredentialType == CredentialType.NetworkCredential) { _rsService.Credentials = CredentialCache.DefaultNetworkCredentials; _rsExecution.Credentials = CredentialCache.DefaultNetworkCredentials; } else { _credential = new NetworkCredential { UserName = reportsContainer.ReportUserLogin, Password = reportsContainer.ReportUserPassword, Domain = reportsContainer.NetworkDomain }; _rsService.Credentials = _credential; _rsExecution.Credentials = _credential; } //Define a URL do Servidor que vai gerar o relatório _rsService.Url = reportsContainer.ReportServiceUrl; _rsExecution.Url = reportsContainer.ReportExecutionUrl; _reportName = @"/" + report.ReportName; _historyID = null; _forRendering = false; //Carrega a session para o relatorio selecionado ReportExecution2005.ExecutionInfo _executionInfo = _rsExecution.LoadReport(_reportName, _historyID); //Prepara os parametros do relatório. ReportExecution2005.ParameterValue[] reportExecutionParameters = new ReportExecution2005.ParameterValue[report.Parameters.Count]; //lista todos os parametros do objeto Report e carrega nos parametros do relatório int contador = 0; foreach (KeyValuePair<string, object> parametro in report.Parameters) { reportExecutionParameters[contador++] = new ReportExecution2005.ParameterValue { Name = parametro.Key, Value = parametro.Value.ToString() }; } //definindo os valores dos parametros do relatório _rsExecution.SetExecutionParameters(reportExecutionParameters, "en-us"); //o relatorio é armazenado como um array de bytes if (report.ReportFormat == ReportFormat.HTML4) reportFile = _rsExecution.Render("HTML4.0", _deviceInfo, out _extension, out _encoding, out _mimeType, out _warnings, out _streamIDs); else reportFile = _rsExecution.Render(report.ReportFormat.ToString(), _deviceInfo, out _extension, out _encoding, out _mimeType, out _warnings, out _streamIDs); return reportFile; }