Exemple #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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #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);
        }