/// <summary> /// Cria um XtraReport a partir do nome do relatório salvo no banco. /// </summary> /// <param name="reportName"></param> /// <param name="showParams"></param> /// <returns></returns> public static XtraReport CreateReportByName(string reportName, bool showParams = true) { using (var ctx = new ReportContext()) { try { var current = ctx.ReportImageDao.First(r => r.ReportName == reportName); string dir = Path.GetTempPath().Replace("Temp", "Reports"); FileManagerIts.CreateDirectory(dir); string path = Path.Combine(dir, current.ReportName + ".repx"); //salva o report no disco FileManagerIts.WriteBytesToFile(path, current.ReportImageData); //carregue a estrutura do relatório XtraReport report = XtraReport.FromFile(path, true); if (showParams == false) { //nao exibe foreach (var p in report.Parameters) { p.Visible = false; } } //objeto para chamar a tela de parametros ReportPrintTool reportPrintTool = new ReportPrintTool(report); ReportUtil.SetParamDataSource(report.DataSource as SqlDataSource, AppConfigManager.Configuration.AppConfig); //criar o documento report.CreateDocument(); //libera memoria da ferramenta reportPrintTool.Dispose(); //retorna o relatorio return(report); } catch (Exception ex) { XMessageIts.ExceptionMessageDetails(ex, "Impossível gerar relatório !", "Falha ao gerar relatório"); LoggerUtilIts.GenerateLogs(ex); return(null); } } }
public static bool IsEditReport(AbstractReportImage report, TypeGroupUser group) { var idGrpReport = (TypeReport)report.IdGrpReport; //outros grupos if (idGrpReport != TypeReport.Sistema || //grupo Sistema somente adminstrador idGrpReport == TypeReport.Sistema && ReportUtil.IsAdmin(group)) { return(true); } else { //senão, exibe mensagem informando da falta de permissao XMessageIts.Erro("Você não possue permissão para editar relatórios do sistema!"); return(false); } }
public static void PrintReportWithParams(ReportImage rptImage) { try { /* * Forma de geração do relatório. * * 1 = Gera e visualiza sem gravar no spool, * 2 = Gera e visualiza gravando no spool, * 3 = Gera somente em spool. */ var param = ParametroManager.GetValorParamByCodigo("report_eng"); if (param == "1") { //new ReportSpoolDaoManager().PrintReportSpool(rptSelected.IdReport); //usar esse aqui no azure pq nao tenho espaco pro spool por enquanto //acho q faz mais sentido salvar a ref do relatorio gerado //do q os bytes do relatorio uma vez que o relatorio ja existe //entao so a pk dele ja seria o suficiente ReportUtil.PrintReport(rptImage); } else if (param == "2") { new ReportSpoolDaoManager().PrintReportSpool(rptImage.IdReport); } else if (param == "3") { new ReportSpoolDaoManager().PrintReportSpool(rptImage.IdReport, false); } else { LoggerUtilIts.GenerateLogs(new Exception("Paramentro report_eng não existe.")); } //nao acontece nada //nao podemos impedir a rotina de funcionar } catch (Exception ex) { XMessageIts.ExceptionJustMessage(ex, "Falha ao gerar o relatório."); } }
public void PrintReport(int idreport) { ReportUtil.PrintReportAndGenerateSpool(idreport); }