/// <summary> /// Обработчик события - изменение значения в отображении для сохранения /// </summary> /// <param name="dgv">Объект, инициировавший событие</param> /// <param name="ev">Аргумент события</param> protected override void onEventCellValueChanged(object dgv, DataGridViewTEPValues.DataGridViewTEPValuesCellValueChangedEventArgs ev) { DataRow[] rowsParameter = null; for (HandlerDbTaskCalculate.INDEX_TABLE_VALUES indx = (HandlerDbTaskCalculate.INDEX_TABLE_VALUES.UNKNOWN + 1); indx < HandlerDbTaskCalculate.INDEX_TABLE_VALUES.COUNT; indx++) { if (!(indx == HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT) || ((indx == HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT) && (ev.m_iQuality == HandlerDbTaskCalculate.ID_QUALITY_VALUE.DEFAULT))) { if ((!(m_arTableEdit[(int)indx] == null)) && (m_arTableEdit[(int)indx].Columns.Contains(@"ID_PUT") == true)) { rowsParameter = m_arTableEdit[(int)indx].Select(@"ID_PUT=" + ev.m_IdParameter); if (rowsParameter.Length == 1) { rowsParameter[0][@"VALUE"] = ev.m_Value; //rowsParameter[0][@"QUALITY"] = (int)HandlerDbTaskCalculate.ID_QUALITY_VALUE.USER; } else { Logging.Logg().Error(@"PanelTaskInval::onEventCellValueChanged (INDEX_TABLE_VALUES=" + indx.ToString() + @") - не найден параметр при изменении значения (по умолчанию) в 'DataGridView' ...", Logging.INDEX_MESSAGE.NOT_SET); } } else { ; //??? ошибка - таблица не инициализирована ИЛИ таблица не содержит столбец 'ID_PUT' } } else { ; } } }
/// <summary> /// Получение входных значений /// из INVAL /// </summary> /// <param name="type">тип задачи</param> /// <param name="arQueryRanges">диапазон запроса</param> /// <param name="idPeriod">тек. период</param> /// <param name="typeValues">тип данных</param> /// <param name="err">Индентификатор ошибки</param> /// <returns>таблица значений</returns> public DataTable GetInVal(TaskCalculate.TYPE type , DateTimeRange[] arQueryRanges , ID_PERIOD idPeriod , HandlerDbTaskCalculate.INDEX_TABLE_VALUES typeValues , out int err) { string strQuery = string.Empty; bool bLastItem = false; for (int i = 0; i < arQueryRanges.Length; i++) { bLastItem = !(i < (arQueryRanges.Length - 1)); strQuery += @"SELECT v.ID, v.ID_PUT, v.ID_USER, v.ID_SOURCE, v.DATE_TIME, v.ID_TIME" + ", v.ID_TIMEZONE, v.QUALITY, v.VALUE, v.WR_DATETIME" + @" FROM [dbo].[" + getNameDbTable(type, TABLE_CALCULATE_REQUIRED.ALG) + "] a" + @" LEFT JOIN [dbo].[" + getNameDbTable(type, TABLE_CALCULATE_REQUIRED.PUT) + "] p" + @" ON a.ID = p.ID_ALG" + @" LEFT JOIN [dbo].[" + getNameDbTable(type, TABLE_CALCULATE_REQUIRED.VALUE) + @"_" + arQueryRanges[i].End.ToString(@"yyyyMM") + @"] v" + @" ON v.ID_PUT = p.ID" + @" WHERE ID_TASK = " + (int)IdTask + @" AND [DATE_TIME] > '" + arQueryRanges[i].Begin.ToString(@"yyyyMMdd HH:mm:ss") + @"'" + @" AND [DATE_TIME] <= '" + arQueryRanges[i].End.ToString(@"yyyyMMdd HH:mm:ss") + @"'" + @" AND v.ID_TIME = " + (int)ID_PERIOD.DAY + @" AND [ID_TIMEZONE] = " + (int)_Session.m_currIdTimezone + @" AND [QUALITY] > 0"; if (bLastItem == false) { strQuery += @" UNION ALL "; } } strQuery += @" ORDER BY [DATE_TIME] "; return(Select(strQuery, out err)); }
/// <summary> /// Установить значения таблиц для редактирования /// </summary> /// <param name="err">Идентификатор ошибки при выполнеинии функции</param> /// <param name="strErr">Строка текста сообщения при наличии ошибки</param> protected override void setValues(out int err, out string strErr) { err = 0; strErr = string.Empty; int iRegDbConn = -1; DateTimeRange[] arQueryRanges = getDateTimeRangeValuesVar(); m_handlerDb.RegisterDbConnection(out iRegDbConn); if (!(iRegDbConn < 0)) { //Запрос для получения архивных данных m_arTableOrigin[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.ARCHIVE] = new DataTable(); //Запрос для получения автоматически собираемых данных m_arTableOrigin[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.SESSION] = HandlerDb.GetValuesVar(Type , _IdSession , ActualIdPeriod , CountBasePeriod , arQueryRanges , out err); //Проверить признак выполнения запроса if (err == 0) { //Заполнить таблицу данными вводимых вручную (значения по умолчанию) m_arTableOrigin[(int)HandlerDbTaskCalculate.INDEX_TABLE_VALUES.DEFAULT] = HandlerDb.GetValuesDef(ActualIdPeriod, out err); //Проверить признак выполнения запроса if (err == 0) { //Начать новую сессию расчета // , получить входные для расчета значения для возможности редактирования HandlerDb.CreateSession(_IdSession , _currIdPeriod , CountBasePeriod , _currIdTimezone , m_arTableDictPrjs[(int)INDEX_TABLE_DICTPRJ.PARAMETER] , ref m_arTableOrigin , new DateTimeRange(arQueryRanges[0].Begin, arQueryRanges[arQueryRanges.Length - 1].End) , out err, out strErr); // создать копии для возможности сохранения изменений for (HandlerDbTaskCalculate.INDEX_TABLE_VALUES indx = (HandlerDbTaskCalculate.INDEX_TABLE_VALUES.UNKNOWN + 1); indx < HandlerDbTaskCalculate.INDEX_TABLE_VALUES.COUNT; indx++) { m_arTableEdit[(int)indx] = m_arTableOrigin[(int)indx].Copy(); } } else { strErr = @"ошибка получения данных по умолчанию с " + PanelManagement.m_dtRange.Begin.ToString() + @" по " + PanelManagement.m_dtRange.End.ToString(); } } else { strErr = @"ошибка получения автоматически собираемых данных с " + PanelManagement.m_dtRange.Begin.ToString() + @" по " + PanelManagement.m_dtRange.End.ToString(); } } else { ; } if (!(iRegDbConn > 0)) { m_handlerDb.UnRegisterDbConnection(); } else { ; } }