//Диапазон источника 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())); }
//Чтение списка сигналов из клона private void PrepareForClone(string cloneFile) { try { AddEvent("Чтение свойств клона"); if (!DaoDb.Check(cloneFile, new[] { "Objects", "Signals", "MomentsValues" })) { AddError("Недопустимый файл клона"); } else { using (var db = new DaoDb(cloneFile)) { using (var sys = new SysTabl(db)) { if (_form != null) { _form.CalcName.Text = sys.Value("CloneDescription"); } _cloneInf = sys.Value("CloneInf"); RunSource(sys.SubValue("Source", "ProviderCode"), sys.SubValue("Source", "ProviderName"), sys.SubValue("Source", "ProviderInf")); } AddEvent("Чтение списка сигналов клона"); _source.ClearSignals(); int n = 0; using (var rec = new RecDao(db, "SELECT SignalId, FullCode, DataType, Inf FROM Signals WHERE ConstValue Is Null")) while (rec.Read()) { _source.AddSignal(rec.GetString("Inf"), rec.GetString("FullCode"), rec.GetString("DataType").ToDataType(), rec.GetInt("SignalId")); n++; } AddEvent("Сигналы клона прочитаны", n + " сигналов"); //db.Execute("DELETE * FROM MomentsValues"); //db.Execute("DELETE * FROM Intervals"); using (var rec = new RecDao(db, "Intervals")) { rec.AddNew(); rec.Put("TimeBegin", _timeBegin); rec.Put("TimeEnd", _timeEnd); } } } } catch (Exception ex) { AddError("Ошибка при подготовке клона", ex); } }
static void Main() { ControllerDataFile = Different.GetInfoTaskDir() + @"Controller\ControllerData.accdb"; using (var sys = new SysTabl(ControllerDataFile)) { MonitorHistory = new MonitorHistory { Inf = sys.Value("MonitorHistoryProps") }; CheckTime = sys.Value("MonitorHistoryCheckTime").ToDateTime(); } Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(ThreadsForm = new ThreadsForm()); }
//Получение времени источника public TimeInterval GetTime() { TimeIntervals.Clear(); TimeInterval t = null; try { if (IsOriginal) { t = new TimeInterval(Different.MinDate.AddYears(1), DateTime.Now); } else { using (var sys = new SysTabl(DatabaseFile, false)) t = new TimeInterval(DateTime.Parse(sys.Value("BeginInterval")), DateTime.Parse(sys.Value("EndInterval"))); } TimeIntervals.Add(t); } catch (Exception ex) { AddError("Ошибка определения диапазона источника", ex); IsConnected = false; } return(t); }
//Загрузить проект projectFile, compileDir - каталог для компиляции public string LoadProject(string projectFile) { StartAtom(Atom.LoadProject, true, projectFile); CountsToZero(); if (State == State.Closed) { AddError("Копилятор уже был закрыт"); } else { try { if (!DaoDb.Check(projectFile, new[] { "CalcParams", "CalcSubParams", "CalcParamsArchive", "Objects", "Signals", "SignalsInUse", "GraficsList", "GraficsValues" })) { AddError("Указан неправильный файл проекта", null, projectFile); } else { using (var db = new DaoDb(projectFile)) { using (var rec = new RecDao(db, "SELECT * FROM Providers WHERE (ProviderCode='HandInputSource') OR (ProviderCode='HandInputSqlSource')")) if (rec.HasRows()) { HandInputSource = rec.GetString("ProviderName"); } using (var sys = new SysTabl(db)) { _code = sys.SubValue("ProjectInfo", "Project"); _name = sys.SubValue("ProjectInfo", "ProjectName"); sys.PutSubValue("ProjectInfo", "HandInputSource", HandInputSource); //ab _objectsFile = sys.Value("ObjectsFile"); if (string.IsNullOrEmpty(_objectsFile)) { _objectsFile = projectFile; } if (_objectsFile != projectFile) { if (!DaoDb.Check(projectFile, new[] { "CalcParams", "CalcSubParams", "CalcParamsArchive", "Objects", "Signals", "SignalsInUse", "GraficsList", "GraficsValues" })) { AddError("В проекте указан неправильный файл списка объектов", null, projectFile); _objectsFile = projectFile; } } //\ab } } _projectFile = projectFile; } } catch (Exception ex) { AddError("Указан неправильный файл проекта", ex, projectFile); } } return(FinishAtom(State.Project, State.Empty, "Проект:" + _code + ", " + _name)); }
//Получение диапазона клона public TimeInterval GetTime() { if (CloneFile.IsEmpty()) { return(new TimeInterval(Different.MinDate, Different.MaxDate)); } using (var sys = new SysTabl(CloneFile)) { TimeIntervals.Clear(); var t = new TimeInterval(sys.Value("BeginInterval").ToDateTime(), IsHandInput ? DateTime.Now : sys.Value("EndInterval").ToDateTime()); TimeIntervals.Add(t); return(t); } }
//Создание клона архива public void MakeClone(DateTime beginRead, DateTime endRead, string cloneFile = "", string cloneProps = "") { try { using (var db = new DaoDb(cloneFile)) { using (var sys = new SysTabl(db)) CloneInf = (sys.Value("CloneInf") ?? "").ToPropertyDicS(); using (CloneRec = new RecDao(db, "SELECT * FROM MomentsValues")) using (CloneErrorRec = new RecDao(db, "SELECT * FROM ErrorsList")) GetValues(beginRead, endRead); } } catch (Exception ex) { Logger.AddError("Ошибка при создании клона", ex); } CloneRec = null; }
private TimeInterval GetCloneInterval(string cloneDir) { using (var sys = new SysTabl(cloneDir.EndDir() + "Clone.accdb")) return(new TimeInterval(sys.Value("BeginInterval").ToDateTime(), sys.Value("EndInterval").ToDateTime())); }
public void InstanceFuns() { using (var sys = new SysTabl(CopyFile(""), false)) { Assert.IsNotNull(sys); Assert.AreEqual("OptionsValue", sys.Value("FileOptions")); Assert.AreEqual("ParamValue", sys.Value("Param")); Assert.AreEqual("OptionsTag", sys.Tag("FileOptions")); Assert.AreEqual("ParamTag", sys.Tag("Param")); sys.PutValue("Param", "s1", "t1"); Assert.AreEqual("s1", sys.Value("Param")); Assert.AreEqual("t1", sys.Tag("Param")); sys.PutValue("Param", 22, "t2"); Assert.AreEqual("22", sys.Value("Param")); Assert.AreEqual("t2", sys.Tag("Param")); sys.PutValue("Param", 33.3, "t3"); Assert.AreEqual("33,3", sys.Value("Param")); Assert.AreEqual("t3", sys.Tag("Param")); sys.PutValue("Param", new DateTime(2000, 1, 1)); Assert.AreEqual("01.01.2000 0:00:00", sys.Value("Param")); Assert.AreEqual("t3", sys.Tag("Param")); sys.PutValue("Param", true, ""); Assert.AreEqual("True", sys.Value("Param")); Assert.AreEqual("", sys.Tag("Param")); sys.PutTag("Param", "Tag", "Value"); Assert.AreEqual("Value", sys.Value("Param")); Assert.AreEqual("Tag", sys.Tag("Param")); } var db = new DaoDb(CopyFile("")); using (var sys = new SysTabl(db)) { Assert.IsNotNull(sys); Assert.AreEqual("OptionsValue", sys.Value("FileOptions")); Assert.AreEqual("ParamValue", sys.Value("Param")); Assert.AreEqual("OptionsTag", sys.Tag("FileOptions")); Assert.AreEqual("ParamTag", sys.Tag("Param")); Assert.AreEqual("Тестовый файл", sys.SubValue("FileOptions", "FileDescription")); Assert.AreEqual("DaoTest", sys.SubValue("FileOptions", "FileType")); Assert.AreEqual("2.0.0", sys.SubValue("FileOptions", "FileVersion")); Assert.AreEqual("11.07.2016", sys.SubValue("FileOptions", "FileVersionDate")); Assert.AreEqual("SubValue", sys.SubValue("Param", "SubParam")); Assert.AreEqual(null, sys.SubTag("FileOptions", "FileDescription")); Assert.AreEqual("SubTag", sys.SubTag("Param", "SubParam")); sys.PutSubValue("Param", "SubParam", "s1", "t1"); Assert.AreEqual("s1", sys.SubValue("Param", "SubParam")); Assert.AreEqual("t1", sys.SubTag("Param", "SubParam")); sys.PutSubValue("Param", "SubParam", 22, "t2"); Assert.AreEqual("22", sys.SubValue("Param", "SubParam")); Assert.AreEqual("t2", sys.SubTag("Param", "SubParam")); sys.PutSubValue("Param", "SubParam", 33.3, "t3"); Assert.AreEqual("33,3", sys.SubValue("Param", "SubParam")); Assert.AreEqual("t3", sys.SubTag("Param", "SubParam")); sys.PutSubValue("Param", "SubParam", new DateTime(2000, 1, 1)); Assert.AreEqual("01.01.2000 0:00:00", sys.SubValue("Param", "SubParam")); Assert.AreEqual("t3", sys.SubTag("Param", "SubParam")); sys.PutSubValue("Param", "SubParam", true, ""); Assert.AreEqual("True", sys.SubValue("Param", "SubParam")); Assert.AreEqual("", sys.SubTag("Param", "SubParam")); sys.PutSubTag("Param", "SubParam", "Tag", "Value"); Assert.AreEqual("Value", sys.SubValue("Param", "SubParam")); Assert.AreEqual("Tag", sys.SubTag("Param", "SubParam")); } db.Dispose(); }
//Сохранение в файл клона public void ValuesToClone() { using (var db = new DaoDb(_cloneFile)) { int id; using (var rec = new RecDao(db, "SELECT * FROM Objects WHERE CodeObject='" + Code + "'")) { if (!rec.HasRows()) { rec.AddNew(); } rec.Put("CodeObject", Code); rec.Put("NameObject", Name); rec.Put("Comment", Comment); id = rec.GetInt("ObjectId"); } using (var rec = new RecDao(db, "SELECT * FROM Signals WHERE ObjectId=" + id)) { if (!rec.HasRows()) { rec.AddNew(); } rec.Put("ObjectId", id); rec.Put("CodeSignal", "Руч"); rec.Put("NameSignal", "Ручной ввод"); rec.Put("FullCode", Code + ".Руч"); rec.Put("Default", true); rec.Put("DataType", DataType); rec.Put("Units", Units); rec.Put("Active", true); id = rec.GetInt("SignalId"); rec.Update(); } var dt = DataType.ToDataType(); DateTime mind = Different.MaxDate, maxd = Different.MinDate; RecDao recv; if (dt.LessOrEquals(BaseLibrary.DataType.Real)) { db.Execute("DELETE * FROM MomentsValues WHERE SignalId=" + id); recv = new RecDao(db, "SELECT * FROM MomentsValues WHERE SignalId=" + id); } else { db.Execute("DELETE * FROM MomentsStrValues WHERE SignalId=" + id); recv = new RecDao(db, "SELECT * FROM MomentsStrValues WHERE SignalId=" + id); } using (recv) foreach (var v in HandInputValues) { v.ToRecordset(recv, id, dt); if (v.TimeCorrect && v.Time.ToDateTime() < mind) { mind = v.Time.ToDateTime(); } if (v.TimeCorrect && v.Time.ToDateTime() > maxd) { maxd = v.Time.ToDateTime(); } } if (mind != Different.MaxDate) { using (var sys = new SysTabl(db, false)) { var d = sys.Value("BeginInterval").ToDateTime(); if (d == Different.MinDate || d > mind) { sys.PutValue("BeginInterval", mind.ToString()); } d = sys.Value("EndInterval").ToDateTime(); if (d < maxd) { sys.PutValue("EndInterval", maxd.ToString()); } } } } }
protected override TimeInterval GetTimeProvider() { using (var sys = new SysTabl(CloneFile, false)) return(new TimeInterval(sys.Value("BeginInterval").ToDateTime(), sys.Value("EndInterval").ToDateTime())); }
//Запись значений ручного ввода, beg - начало периода расчета public void WriteHandInput(DateTime beg, DateTime en) { if (IsHandInput) { try { Book.AddEvent("Сохрание значений ручного ввода из ячеек", CodeFinal); var pars = new DicS <ReportHandParam>(); foreach (var param in Params.Values) { if (param.HandInputCell != null) { pars.Add(param.FullCode, new ReportHandParam(param, GeneralRep.ActiveBook.ValueFromCell(param.HandInputCell))); } } using (var db = new DaoDb(_handInputFile)) { using ( var rec = new RecDao(db, "SELECT Objects.CodeObject, MomentsValues.Time FROM (Objects INNER JOIN Signals ON Objects.ObjectId = Signals.ObjectId) INNER JOIN MomentsValues ON Signals.SignalId = MomentsValues.SignalId " + "WHERE (Time >= " + beg.ToAccessString() + ") AND (Time < " + en.ToAccessString() + ")")) while (rec.Read()) { if (pars.ContainsKey(rec.GetString("CodeObject"))) { rec.Put("Time", Different.MaxDate); } } using ( var rec = new RecDao(db, "SELECT Objects.CodeObject, MomentsStrValues.Time FROM (Objects INNER JOIN Signals ON Objects.ObjectId = Signals.ObjectId) INNER JOIN MomentsStrValues ON Signals.SignalId = MomentsStrValues.SignalId " + "WHERE (Time >= " + beg.ToAccessString() + ") AND (Time < " + en.ToAccessString() + ")")) while (rec.Read()) { if (pars.ContainsKey(rec.GetString("CodeObject"))) { rec.Put("Time", Different.MaxDate); } } db.Execute("DELETE * FROM MomentsValues WHERE Time=" + Different.MaxDate.ToAccessString()); db.Execute("DELETE * FROM MomentsStrValues WHERE Time=" + Different.MaxDate.ToAccessString()); using ( var rec = new RecDao(db, "SELECT Objects.CodeObject, Objects.ObjectId, Signals.CodeSignal, Signals.SignalId FROM Objects INNER JOIN Signals ON Objects.ObjectId = Signals.SignalId") ) while (rec.Read()) { var code = rec.GetString("CodeObject"); if (pars.ContainsKey(code)) { pars[code].ObjectId = rec.GetInt("ObjectId"); pars[code].SignalId = rec.GetInt("SignalId"); } } using (var reco = new RecDao(db, "Objects")) using (var recs = new RecDao(db, "Signals")) foreach (var param in pars.Values) { if (param.ObjectId == 0) { var ap = param.ReportParam.ArchiveParam; var par = ap.FirstParam; reco.AddNew(); reco.Put("CodeObject", par.Code); reco.Put("NameObject", par.Name); param.ObjectId = reco.GetInt("ObjectId"); reco.Update(); recs.AddNew(); recs.Put("ObjectId", param.ObjectId); recs.Put("CodeSignal", "Руч"); recs.Put("NameSignal", "Ручной ввод"); recs.Put("FullCode", par.Code + ".Руч"); recs.Put("Default", true); recs.Put("DataType", ap.DataType.ToRussian()); recs.Put("Units", ap.Units); recs.Put("Min", ap.Min); recs.Put("Max", ap.Max); recs.Put("Active", true); param.SignalId = recs.GetInt("SignalId"); recs.Update(); } } using (var rec = new RecDao(db, "MomentsValues")) using (var recs = new RecDao(db, "MomentsStrValues")) foreach (var param in pars.Values) { if (!param.StringValue.IsEmpty()) { var dt = param.ReportParam.ArchiveParam.DataType; var r = dt.LessOrEquals(DataType.Real) ? rec : recs; r.AddNew(); r.Put("SignalId", param.SignalId); r.Put("Time", beg); if (dt.LessOrEquals(DataType.Real)) { var d = param.StringValue.ToDouble(); if (!double.IsNaN(d)) { r.Put("Value", d); } else { r.Put("Value", 0); r.Put("Nd", 1); } } else if (dt == DataType.String) { r.Put("StrValue", param.StringValue); } else if (dt == DataType.Time) { var t = param.StringValue.ToDateTime(); r.Put("TimeValue", t); if (t == Different.MinDate) { r.Put("Nd", 1); } } } } using (var sys = new SysTabl(db, false)) { var d = sys.Value("BeginInterval").ToDateTime(); if (d == Different.MinDate || d > beg) { sys.PutValue("BeginInterval", beg.ToString()); } d = sys.Value("EndInterval").ToDateTime(); if (d < beg) { sys.PutValue("EndInterval", beg.ToString()); } } } } catch (Exception ex) { Book.AddError("Ошибка при записи ручного ввода", ex); } } }