Example #1
0
    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;
		}
Example #2
0
 private void rptBuilder_OnChangeState(Object opener, CXLReport report, string text) {
   this.doOnAddQueueState(report.UID, report.State, text, csInternalUserName, Utl.GetLocalIP());
 }
Example #3
0
 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));
 }
Example #4
0
 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);
 }
Example #5
0
 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);
   }
 }