//Получение диапазона времени источника //Возвращает Default интервал, если нет связи с источником //Возвращает TimeInterval(Static.MinDate, DateTime.Now) если источник не позволяет определять диапазон protected internal TimeInterval GetTime() { try { if (!Connect()) { return(TimeInterval.CreateDefault()); } AddEvent("Определение диапазона " + (this is Receiver ? "приемника" : "источника")); var ti = GetTimeProvider(); if (!ti.IsDefault) { AddEvent("Временной диапазон определен", ti.Begin + " - " + ti.End); } else { AddError("Временной диапазон не определен"); } return(ti); } catch (Exception ex) { AddError("Ошибка определения временного диапазона провайдера", ex); return(TimeInterval.CreateDefault()); } }
//Диапазон источника protected override TimeInterval GetTimeProvider() { if (!Connect()) { return(TimeInterval.CreateDefault()); } using (var sys = new SysTabl(DbFile)) return(new TimeInterval(sys.Value("BeginInterval").ToDateTime(), sys.Value("EndInterval").ToDateTime())); }
//Получение времени архива ПТК protected override TimeInterval GetTimeProvider() { using (var rec = new AdoReader(Connection, "Exec RT_ARCHDATE")) { var beg = rec.GetTime(0); var en = rec.GetTime(1); return(beg.ToString() != "0:00:00" ? new TimeInterval(beg, en) : TimeInterval.CreateDefault()); } }
//Получение диапазона времени провайдера //Возвращает Default интервал, если нет связи с провайдером //Возвращает TimeInterval(Static.MinDate, DateTime.Now) если провайдер не позволяет определять диапазон public TimeInterval GetTime() { if (Provider == null) { return(TimeInterval.CreateDefault()); } var ti = Provider.GetTime(); if (ti.IsDefault && ChangeProvider()) { return(Provider.GetTime()); } return(ti); }
//Получение диапазона архива по блокам истории protected override TimeInterval GetTimeProvider() { DateTime mind = Static.MaxDate, maxd = Static.MinDate; using (var rec = new AdoReader(SqlProps, "SELECT FromDate, ToDate FROM v_HistoryBlock ORDER BY FromDate, ToDate DESC")) while (rec.Read()) { var fromd = rec.GetTime("FromDate"); var tod = rec.GetTime("ToDate"); if (fromd < mind) { mind = fromd; } if (maxd < tod) { maxd = tod; } } if (mind == Static.MaxDate && maxd == Static.MinDate) { return(TimeInterval.CreateDefault()); } return(new TimeInterval(mind, maxd)); }