コード例 #1
0
ファイル: SysTablTest.cs プロジェクト: martugin/InfoTask2
        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();
        }
コード例 #2
0
        //Перенос ссылок из отчета в файл данных
        private void LinksReportToFile()
        {
            try
            {
                AddEvent("Обновление таблицы Cells");
                ClearReportDataFromMemory();
                bool onlyAbsolute = true;
                using (var db = new DaoDb(DataFile))
                {
                    db.Execute("DELETE * FROM Cells");
                    db.Execute("DELETE * FROM Shapes");
                    db.Execute("DELETE * FROM CalcParams WHERE Project='Сохранение'");
                    Projects["Сохранение"].Params.Clear();
                    using (var rp = new RecDao(db, "CalcParams"))
                        using (var rc = new RecDao(db, "Cells"))
                            using (var rs = new RecDao(db, "Shapes"))
                            {
                                foreach (var sheet in GeneralRep.Application.ActiveWorkbook.GetSheets())
                                {
                                    foreach (Comment c in sheet.Comments)
                                    {
                                        onlyAbsolute &= CheckAbsolute(c.Text());
                                        SaveLink(c, null, rp, rc, rs, sheet);
                                    }
                                    foreach (Shape sh in sheet.Shapes)
                                    {
                                        if (sh.Type == MsoShapeType.msoTextBox || sh.Type == MsoShapeType.msoGroup)
                                        {
                                            onlyAbsolute &= CheckAbsolute(sh.Title);
                                            SaveLink(null, sh, rp, rc, rs, sheet);
                                            if (sh.Type == MsoShapeType.msoGroup)
                                            {
                                                foreach (Shape gsh in sh.GroupItems)
                                                {
                                                    if (gsh.Type == MsoShapeType.msoTextBox)
                                                    {
                                                        onlyAbsolute &= CheckAbsolute(gsh.Title);
                                                        SaveLink(null, gsh, rp, rc, rs, sheet);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                    UpdateParams(db);
                    using (var sys = new SysTabl(db))
                    {
                        sys.PutValue("LastChangeLinks", LastChangeLinks.ToString());
                        sys.PutValue("OnlyAbsolute", onlyAbsolute ? "True" : "False");
                    }
                }

                //Сжатие базы
                try { DaoDb.Compress(DataFile, 30000000, General.TmpDir, 2000); }
                catch { }
            }
            catch (Exception ex)
            { AddError("Ошибка при загрузке отчета в файл данных", ex); }
        }
コード例 #3
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());
                        }
                    }
                }
            }
        }
コード例 #4
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);
         }
     }
 }