public static String GetReportParameter(this Params prms, CXLReport report, String name) { String result = null; var prm = prms.ParamByName(name); if (prm != null) { var sql = prm.ValueAsString(); var type = (String)prm.InnerObject; if (!String.IsNullOrEmpty(type) && type.Equals("sql") && report.RptDefinition.DBConnEnabled) { try { result = "" + report.DataFactory.GetScalarValue(report.currentDbConnection, sql, report.RptDefinition.InParams, 120); } catch (Exception ex) { throw new EBioException("Ошибка инициализации параметра отчета :" + name + ":. Сообщение: " + ex.Message + ". SQL: " + sql, ex); } } else { result = _prepareParamValue(report.RptDefinition.InParams, sql); } } return result; }
private void rptBuilder_OnChangeState(Object opener, CXLReport report, string text) { this.doOnAddQueueState(report.UID, report.State, text, csInternalUserName, Utl.GetLocalIP()); }
void rptBuilder_OnAfterBuild(object opener, CXLReport report) { var v_uid = report.UID; var v_fullCode = report.FullCode; var v_state = report.State; var v_debug = report.RptDefinition.DebugIsOn; var v_rptUID = report.UID.ToUpper(); var v_rptFileName = report.LastResultFile; this.remove_from_running(v_rptUID); if (report.State == RemoteProcState.Done) { this.doOnAddReportResult2DB(v_rptUID, v_rptFileName); if (!v_debug) { try { File.Delete(v_rptFileName); } catch (Exception ex) { this.log_msg(String.Format("Ошибка при удалении временного файла \"{0}\", Сообщение:{1}", v_rptFileName, ex.Message)); } } } var v_descState = enumHelper.GetFieldDesc(v_state); this.log_msg(String.Format("Построение отчета \"{0}\", UID:\"{1}\" - завершено. Состояние : \"{2}\".", v_fullCode, v_uid, v_descState)); if ((v_state == RemoteProcState.Done) && v_debug) this.log_msg(String.Format("\t - результат: \"{0}\"", v_rptFileName)); }
void rptBuilder_OnError(object pOpener, CXLReport pReport, Exception pEx) { this.log_msg(String.Format("В процессе построения отчета \"{0}\", UID:\"{1}\" - произошла ошибка.", pReport.RptDefinition.FullCode, pReport.UID)); this.log_err(pEx); }
protected void add_to_running(String rptUID, String rptCode, Params prms, String usrUID, Int32 priority) { if (!this._runningReports.ContainsKey(rptUID)) { CXLReport v_rptBuilder; lock (this._runningReports) { this.log_msg(String.Format("Запуск отчета \"{0}\", UID:\"{1}\"...", rptCode, rptUID)); try { var v_rptCfg = CXLReportConfig.LoadFromFile( rptUID, rptCode, this.cfg.rootRptPath, this.cfg.workPath, this.cfg.connStr, null, usrUID, null, prms, !this.cfg.debugEnabled ); v_rptBuilder = new CXLReport(v_rptCfg); v_rptBuilder.OnChangeState += rptBuilder_OnChangeState; v_rptBuilder.OnTerminatingBuild += rptBuilder_OnAfterBuild; v_rptBuilder.OnError += rptBuilder_OnError; this._runningReports.Add(v_rptBuilder.UID, v_rptBuilder); } catch (Exception v_ex) { var v_errMsg = String.Format("При инициализации отчета \"{0}\":\"{1}\".\n{2}", rptCode, rptUID, Utl.BuildErrorLogMsg(v_ex, DateTime.Now)); this.doOnAddQueueState(rptUID, RemoteProcState.Error, v_errMsg, csInternalUserName, Utl.GetLocalIP()); throw; } } v_rptBuilder.Run((ThreadPriority)priority); } }