Beispiel #1
0
        /// <summary>
        /// Возвратитиь запрос для выборки данных ТГ
        /// </summary>
        /// <param name="tec">Станция, для которой необходимо получить значения</param>
        /// <param name="indx">Индекс текущей группы сигналов</param>
        /// <param name="dtStart">Дата - начало</param>
        /// <param name="dtEnd">Дата - окончание</param>
        /// <returns>Строка запроса</returns>
        private string getQuery(TEC_LOCAL tec,TEC_LOCAL.INDEX_DATA indx,DateTime dtStart,DateTime dtEnd)
        {
            string strRes = @"SELECT res.[OBJECT], res.[ITEM], SUM(res.[VALUE0]) / COUNT(*)[VALUE0], res.[DATETIME], COUNT(*) as [COUNT]
                            FROM(
                            SELECT[OBJECT], [ITEM], [VALUE0], 
                            DATEADD(MINUTE, ceiling(DATEDIFF(MINUTE, DATEADD(DAY, DATEDIFF(DAY, 0, '?DATADATESTART?'), 0), [DATA_DATE]) / 60.) * 60,
                            DATEADD(DAY, DATEDIFF(DAY, 0, '?DATADATESTART?'), 0)) as [DATETIME]
                            FROM[DATA]
                            WHERE[PARNUMBER] = 12 AND[OBJTYPE] = 0 AND([DATA_DATE] > '?DATADATESTART?' AND NOT[DATA_DATE] > '?DATADATEEND?')
                            AND(?SENSORS?)
                            GROUP BY[RCVSTAMP], [OBJECT], [OBJTYPE], [ITEM], [VALUE0], [SEASON],
                            DATEADD(MINUTE, ceiling(DATEDIFF(MINUTE, DATEADD(DAY, DATEDIFF(DAY, 0, '?DATADATESTART?'), 0), [DATA_DATE]) / 60.) * 60,
                            DATEADD(DAY, DATEDIFF(DAY, 0, '?DATADATESTART?'), 0))) res
                            GROUP BY[OBJECT], [ITEM], [DATETIME]
                            ORDER BY[OBJECT], [ITEM], [DATETIME]";

            if (tec.m_Sensors[(int)indx].Equals(string.Empty) == false)
            {
                strRes = strRes.Replace(@"?SENSORS?",tec.m_Sensors[(int)indx]);
                strRes = strRes.Replace(@"?DATADATESTART?",dtStart.ToString(@"yyyyMMdd"));
                strRes = strRes.Replace(@"?DATADATEEND?",dtEnd.ToString(@"yyyyMMdd"));
            }
            else
            {
                strRes = string.Empty;
            }

            return(strRes);
        }
Beispiel #2
0
        /// <summary>
        /// Получить все (ТГ, ТСН) значения для станции
        /// </summary>
        /// <param name="tec">Станция, для которой необходимо получить значения</param>
        /// <param name="iListenerId">Идентификатор установленного соединения с источником данных</param>
        /// <param name="dtStart">Дата - начало</param>
        /// <param name="dtEnd">Дата - окончание</param>
        /// <returns>Результат выполнения - признак ошибки (0 - успех)</returns>
        public int Request(TEC_LOCAL tec,int iListenerId,DateTime dtStart,DateTime dtEnd)
        {
            int iRes = 0;

            tec.m_listValuesDate.Clear();
            if (m_markIndxRequestError == null)
            {
                m_markIndxRequestError = new HMark(0);
            }
            else
            {
                m_markIndxRequestError.SetOf(0);
            }

            DbConnection dbConn = DbSources.Sources().GetConnection(iListenerId,out iRes);

            if (iRes == 0)
            {
                foreach (TEC_LOCAL.INDEX_DATA indx in Enum.GetValues(typeof(TEC_LOCAL.INDEX_DATA)))
                {
                    // запросить и обработать результат запроса по получению значений для группы сигналов в указанный диапазон дат
                    iRes = Request(tec,ref dbConn,dtStart,dtEnd,indx);
                    m_markIndxRequestError.Set((int)indx,iRes < 0);
                }
            }
            else
            {
                Logging.Logg().ExceptionDB("FormMain.Tec.Request () - не установлено соединение с DB...");
                iRes = -1;
            }

            iRes = m_markIndxRequestError.Value == 0 ? 0 : -1;

            return(iRes);
        }
Beispiel #3
0
        /// <summary>
        /// Получить все (ТГ, ТСН) значения для станции
        /// </summary>
        /// <param name="tec">Станция, для которой необходимо получить значения</param>
        /// <param name="iListenerId">Идентификатор установленного соединения с источником данных</param>
        /// <param name="dtStart">Дата - начало</param>
        /// <param name="dtEnd">Дата - окончание</param>
        /// <param name="indx">Индекс группы сигналов</param>
        /// <returns>Результат выполнения - признак ошибки (0 - успех)</returns>
        public int Request(TEC_LOCAL tec,int iListenerId,DateTime dtStart,DateTime dtEnd,TEC_LOCAL.INDEX_DATA indx)
        {
            int    iRes  = 0;
            string query = string.Empty;

            DbConnection dbConn = DbSources.Sources().GetConnection(iListenerId,out iRes);

            iRes = Request(tec,ref dbConn,dtStart,dtEnd,indx);

            return(iRes);
        }
        /// <summary>
        /// Получить все (ТГ, ТСН) значения для станции
        /// </summary>
        /// <param name="tec">Станция, для которой необходимо получить значения</param>
        /// <param name="dbConn">Ссылка на объект соединения с БД-источником данных</param>
        /// <param name="dtStart">Дата - начало</param>
        /// <param name="dtEnd">Дата - окончание</param>
        /// <param name="indx">Индекс группы сигналов</param>
        /// <returns>Результат выполнения - признак ошибки (0 - успех)</returns>
        public int Request(TEC_LOCAL tec, ref DbConnection dbConn, DateTime dtStart, DateTime dtEnd, TEC_LOCAL.INDEX_DATA indx)
        {
            int iRes     = 0
            , err        = -1;
            string query = string.Empty;

            //DateTime dtQuery;
            //TimeSpan tsQuery;

            ActionReport("Получение значения для " + indx.ToString() + " " + tec.m_strNameShr);

            //dtQuery = DateTime.Now;

            tec.m_arTableResult[(int)indx] = null;
            query = getQuery(tec, indx, dtStart, dtEnd);

            if (query.Equals(string.Empty) == false)
            {
                tec.m_arTableResult[(int)indx] = new TEC_LOCAL.TableResult(DbTSQLInterface.Select(ref dbConn, query, null, null, out err));

                //tsQuery = DateTime.Now - dtQuery;

                //Logging.Logg().Action(string.Format(@"TEC.ID={0}, ИНДЕКС={1}, время={4}{2}запрос={3} сек"
                //        , tec.m_Id, indx.ToString(), Environment.NewLine, query, tsQuery.TotalSeconds)
                //    , Logging.INDEX_MESSAGE.NOT_SET);

                if (err == 0)
                {
                    tec.parseTableResult(dtStart, dtEnd, indx, out err);
                    ActionReport("Получены значения для " + indx.ToString() + " " + tec.m_strNameShr);
                }
                else
                {
                    Logging.Logg().Error(string.Format("TEC.ID={0}, ИНДЕКС={1} не получены данные за {2}{3}Запрос={4}"
                                                       , tec.m_Id, indx.ToString(), dtEnd, Environment.NewLine, query)
                                         , Logging.INDEX_MESSAGE.NOT_SET);

                    iRes = -1;
                }
            }
            else
            {
                Logging.Logg().Error(string.Format("TEC.ID={0}, группа ИНДЕКС={1} пропущена, не сформирован запрос за {2}"
                                                   , tec.m_Id, indx.ToString(), dtStart, Environment.NewLine, query)
                                     , Logging.INDEX_MESSAGE.NOT_SET);

                iRes = 1; // Предупреждение
            }

            ReportClear(true);
            return(iRes);
        }