/// <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));
        }
Beispiel #3
0
        /// <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
            {
                ;
            }
        }