/// <summary> /// Вставить в таблицу БД идентификатор новой сессии /// </summary> /// <param name="id">Идентификатор сессии</param> /// <param name="idPeriod">Идентификатор периода расчета</param> /// <param name="cntBasePeriod">Количество базовых периодов расчета в интервале расчета</param> /// <param name="idTimezone">Идентификатор часового пояса</param> /// <param name="dtRange">Диапазон даты/времени для интервала расчета</param> /// <param name="err">Идентификатор ошибки при выполнеинии функции</param> private void insertIdSession(int id , ID_PERIOD idPeriod , int cntBasePeriod , ID_TIMEZONE idTimezone , DateTimeRange dtRange , out int err) { err = -1; string strQuery = string.Empty; // подготовить содержание запроса при вставке значений, идентифицирующих новую сессию strQuery = @"INSERT INTO " + HandlerDbTaskCalculate.s_NameDbTables[(int)INDEX_DBTABLE_NAME.SESSION] + @" (" + @"[ID_CALCULATE]" + @", [ID_TASK]" + @", [ID_USER]" + @", [ID_TIME]" + @", [ID_TIMEZONE]" + @", [DATETIME_BEGIN]" + @", [DATETIME_END]) VALUES (" ; strQuery += id; strQuery += @"," + (int)ID_TASK.TEP; strQuery += @"," + HTepUsers.Id; strQuery += @"," + (int)idPeriod; strQuery += @"," + (int)idTimezone; strQuery += @",'" + dtRange.Begin.ToString(System.Globalization.CultureInfo.InvariantCulture) + @"'"; // @"yyyyMMdd HH:mm:ss" strQuery += @",'" + dtRange.End.ToString(System.Globalization.CultureInfo.InvariantCulture) + @"'"; // @"yyyyMMdd HH:mm:ss" strQuery += @")"; //Вставить в таблицу БД строку с идентификтором новой сессии DbTSQLInterface.ExecNonQuery(ref _dbConnection, strQuery, null, null, out err); }
public void Initialize(long id, ID_PERIOD idPeriod, ID_TIMEZONE idTimezone, int curOffsetUTC, DateTimeRange rangeDatetime) { m_Id = id; m_currIdPeriod = idPeriod; m_currIdTimezone = idTimezone; m_curOffsetUTC = curOffsetUTC; m_rangeDatetime = rangeDatetime; }
public void FillValueTimezone(DataTable tableValues, ID_TIMEZONE idSelected) { fillComboBoxValues(tableValues.Rows.Cast <DataRow>(), INDEX_CONTROL_BASE.CBX_TIMEZONE, (int)idSelected, @"NAME_SHR", cbxTimezone_SelectedIndexChanged); }
/// <summary> /// Установить новое значение для текущего периода /// </summary> /// <param name="cbxTimezone">Объект, содержащий значение выбранной пользователем зоны двты/времени</param> public void SetCurrentTimeZone(ID_TIMEZONE idTimazone, int offsetUTC) { m_currIdTimezone = idTimazone; m_curOffsetUTC = offsetUTC; }
/// <summary> /// Создать новую сессию для расчета /// - вставить входные данные во временную таблицу /// </summary> /// <param name="idSession">Идентификатор сессии</param> /// <param name="idPeriod">Идентификатор периода расчета</param> /// <param name="cntBasePeriod">Количество базовых периодов расчета в интервале расчета</param> /// <param name="idTimezone">Идентификатор часового пояса</param> /// <param name="tablePars">Таблица характеристик входных параметров</param> /// <param name="tableSessionValues">Таблица значений входных параметров</param> /// <param name="tableDefValues">Таблица значений по умолчанию входных параметров</param> /// <param name="dtRange">Диапазон даты/времени для интервала расчета</param> /// <param name="err">Идентификатор ошибки при выполнеинии функции</param> /// <param name="strErr">Строка текста сообщения при наличии ошибки</param> public void CreateSession(int idSession , ID_PERIOD idPeriod , int cntBasePeriod , ID_TIMEZONE idTimezone , DataTable tablePars , ref DataTable [] arTableValues , DateTimeRange dtRange , out int err, out string strErr) { err = 0; strErr = string.Empty; int iAVG = -1; string strQuery = string.Empty; // строки для удаления из таблицы значений "по умолчанию" // при наличии дубликатов строк в таблице с загруженными из источников с данными DataRow[] rowsSel = null; // удалить строки из таблицы со значениями "по умолчанию" foreach (DataRow rValVar in arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows) { rowsSel = arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT].Select(@"ID_PUT=" + rValVar[@"ID"]); foreach (DataRow rToRemove in rowsSel) { arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT].Rows.Remove(rToRemove); } } // вставить строки из таблицы со значениями "по умолчанию" foreach (DataRow rValDef in arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT].Rows) { rowsSel = tablePars.Select(@"ID=" + rValDef[@"ID_PUT"]); if (rowsSel.Length == 1) { iAVG = (Int16)rowsSel[0][@"AVG"]; arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Add(new object[] { rValDef[@"ID_PUT"] //, HUsers.Id //ID_USER //, -1 //ID_SOURCE , idSession //ID_SESSION , (int)HandlerDbTaskCalculate.ID_QUALITY_VALUE.DEFAULT //QUALITY , (iAVG == 0) ? cntBasePeriod * (double)rValDef[@"VALUE"] : (double)rValDef[@"VALUE"] //VALUE , HDateTime.ToMoscowTimeZone() //??? GETADTE() } ); } else { ; // по идентификатору найден не единственный парпметр расчета } } if ((arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Columns.Count > 0) && (arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Count > 0)) { //Вситвить строку с идентификатором новой сессии insertIdSession(idSession, idPeriod, cntBasePeriod, idTimezone, dtRange, out err); //Вставить строки в таблицу БД со входными значениями для расчета insertInValues(arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION], out err); //Вставить строки в таблицу БД со выходными значениями для расчета insertOutValues(idSession, out err); // необходимость очистки/загрузки - приведение структуры таблицы к совместимому с [inval] arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION].Rows.Clear(); // получить входные для расчета значения для возможности редактирования strQuery = @"SELECT [ID_PUT] as [ID], [ID_SESSION], [QUALITY], [VALUE], [WR_DATETIME]" + @" FROM [" + s_NameDbTables[(int)INDEX_DBTABLE_NAME.INVALUES] + @"]" + @" WHERE [ID_SESSION]=" + idSession; arTableValues[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION] = Select(strQuery, out err); } else { Logging.Logg().Error(@"HandlerDbTaskCalculate::CreateSession () - отсутствуют строки для вставки ...", Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Инициализация объектов формы /// </summary> /// <param name="err">номер ошибки</param> /// <param name="errMsg">текст ошибки</param> protected override void initialize(out int err, out string errMsg) { err = 0; errMsg = string.Empty; ID_TIMEZONE idProfileTimezone = ID_TIMEZONE.UNKNOWN; ID_PERIOD idProfilePeriod = ID_PERIOD.UNKNOWN; string strItem = string.Empty; Control ctrl = null; //Заполнить таблицы со словарными, проектными величинами // PERIOD, TIMWZONE, COMP, PARAMETER, RATIO initialize //m_markTableDictPrj = new HMark (new ID_DBTABLE[] { /*ID_DBTABLE.PERIOD * , */ID_DBTABLE.TIME, ID_DBTABLE.TIMEZONE , ID_DBTABLE.COMP_LIST , IsInParameters == true ? ID_DBTABLE.IN_PARAMETER : ID_DBTABLE.UNKNOWN , IsOutParameters == true ? ID_DBTABLE.OUT_PARAMETER : ID_DBTABLE.UNKNOWN , ID_DBTABLE.RATIO } , out err, out errMsg ); HandlerDb.FilterDbTableTimezone = TepCommon.HandlerDbTaskCalculate.DbTableTimezone.Msk; HandlerDb.FilterDbTableTime = TepCommon.HandlerDbTaskCalculate.DbTableTime.Month; HandlerDb.FilterDbTableCompList = HandlerDbTaskCalculate.DbTableCompList.Tg; //активность_кнопки_сохранения try { if (Enum.IsDefined(typeof(MODE_CORRECT), m_dictProfile.GetAttribute(HTepUsers.ID_ALLOWED.ENABLED_CONTROL)) == true) { (Controls.Find(PanelManagementVedomostBl.INDEX_CONTROL.BUTTON_SAVE.ToString(), true)[0] as Button).Enabled = (MODE_CORRECT)MODE_CORRECT.Parse(typeof(MODE_CORRECT), m_dictProfile.GetAttribute(HTepUsers.ID_ALLOWED.ENABLED_CONTROL)) == MODE_CORRECT.ENABLE; } else { (Controls.Find(PanelManagementVedomostBl.INDEX_CONTROL.BUTTON_SAVE.ToString(), true)[0] as Button).Enabled = false; } } catch (Exception e) { // ??? Logging.Logg().Exception(e, string.Format(@"PanelTaskVedomostBl::initialize () - BUTTON_SAVE.Enabled..."), Logging.INDEX_MESSAGE.NOT_SET); err = -2; } if (err == 0) { try { //??? m_bflgClear = !m_bflgClear; //Заполнить элемент управления с часовыми поясами idProfileTimezone = ID_TIMEZONE.MSK; PanelManagement.FillValueTimezone(HandlerDb.m_dictTableDictPrj[ID_DBTABLE.TIMEZONE] , idProfileTimezone); //Заполнить элемент управления с периодами расчета idProfilePeriod = (ID_PERIOD)int.Parse(m_dictProfile.GetAttribute(HTepUsers.ID_ALLOWED.PERIOD)); PanelManagement.FillValuePeriod(HandlerDb.m_dictTableDictPrj[ID_DBTABLE.TIME] , idProfilePeriod); PanelManagement.AllowUserTimezoneChanged = false; PanelManagement.AllowUserPeriodChanged = false; } catch (Exception e) { Logging.Logg().Exception(e, @"PanelTaskVedomostBl::initialize () - ...", Logging.INDEX_MESSAGE.NOT_SET); } } else { Logging.Logg().Error(MethodBase.GetCurrentMethod(), @"...", Logging.INDEX_MESSAGE.NOT_SET); } }
/// <summary> /// Установить новое значение для текущего периода /// </summary> /// <param name="cbxTimezone">Объект, содержащий значение выбранной пользователем зоны двты/времени</param> protected void setCurrentTimeZone(ComboBox cbxTimezone) { _currIdTimezone = (ID_TIMEZONE)m_arListIds[(int)INDEX_ID.TIMEZONE][cbxTimezone.SelectedIndex]; _curOffsetUTC = (int)m_arTableDictPrjs[(int)INDEX_TABLE_DICTPRJ.TIMEZONE].Select(@"ID=" + (int)_currIdTimezone)[0][@"OFFSET_UTC"]; }