/// <summary>Получает часовой набор значений указанного параметра за указанный период</summary> /// <param name="start_time">Начало интервала</param> /// <param name="parameter_index">Индекс параметра</param> /// <param name="sql_queries">Название параметра (не используется в ODBC)</param> /// <param name="table">Ссылка на таблицу в памяти для приёма истории значений параметра</param> /// <returns>Запрос успешен: параметр существует и получены данные с хорошим качеством</returns> internal bool get_hour_interval(DateTime start_time, ushort index, Collection <string> sql_queries, ref MemoryTable table) { // счётчик принятых успешно данных uint count = 0; // обработка каждого, из ассоциированных с параметром, запросов foreach (var _query in sql_queries) { // выполняем вставку начала обрабатываемого часа в sql запрос string _sql_query = Regex.Replace(_query, "_unix_basetime_", (start_time - new DateTime(1970, 1, 1)).TotalSeconds.ToString()); // проверка доступности источника данных if (_source_active) { // выполнение запроса using (OdbcDataReader _reader = new OdbcCommand(_sql_query, _odbc_connection).ExecuteReader()) { // циклическое чтение данных while (_reader.Read()) { // подсчёт успешно принятых строк данных count++; // запись результатов в таблицу в памяти table.write_value(index, new DateTime(1970, 1, 1).AddSeconds(_reader.GetDouble(0)), _reader.GetDouble(1), true); } } } } return(count > 0); }