Ejemplo n.º 1
0
 //Диапазон источника
 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()));
 }
Ejemplo n.º 2
0
        //Чтение списка сигналов из клона
        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);
            }
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        //Получение времени источника
        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);
        }
Ejemplo n.º 5
0
        //Загрузить проект 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));
        }
Ejemplo n.º 6
0
 //Получение диапазона клона
 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);
     }
 }
Ejemplo n.º 7
0
 //Создание клона архива
 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;
 }
Ejemplo n.º 8
0
 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()));
 }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
        //Сохранение в файл клона
        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());
                        }
                    }
                }
            }
        }
Ejemplo n.º 11
0
 protected override TimeInterval GetTimeProvider()
 {
     using (var sys = new SysTabl(CloneFile, false))
         return(new TimeInterval(sys.Value("BeginInterval").ToDateTime(), sys.Value("EndInterval").ToDateTime()));
 }
Ejemplo n.º 12
0
 //Запись значений ручного ввода, 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);
         }
     }
 }