コード例 #1
0
        private bool SaveSateOld(Dictionary <string, string> state)
        {
            if (_daoDb != null)
            {
                _daoDb.Execute("DELETE * FROM " + TableName);

                const string stringSql = "SELECT " + FieldPropName + ", " + FieldPropValue + " FROM " + TableName + ";";
                using (var rs = new RecDao(_daoDb, stringSql))
                {
                    foreach (var key in state.Keys)
                    {
                        if (key != null)
                        {
                            rs.AddNew();
                            rs.Put(FieldPropName, key);
                            rs.Put(FieldPropValue, state[key]);
                        }
                    }
                }

                return(true);
            }

            return(false);
        }
コード例 #2
0
ファイル: ModuleGenerator.cs プロジェクト: martugin/InfoTask2
 //Сгенерировать
 public void Generate(string makedFile,           //Файл сгенерированных таблиц
                      string makedTabl,           //Главная сгенерированная таблица
                      string makedSubTabl = null) //Подчиненная сгенерированная таблица
 {
     try
     {
         AddEvent("Открытие рекордсетов для записи сгенерированных значений");
         using (var db = new DaoDb(makedFile))
         {
             if (makedSubTabl != null)
             {
                 db.Execute("DELETE * FROM " + makedSubTabl);
             }
             db.Execute("DELETE * FROM " + makedTabl);
             using (var rec = new DaoRec(db, makedTabl))
                 using (var subRec = makedSubTabl == null ? null : new DaoRec(db, makedSubTabl))
                     foreach (var row in _rowsGen.Values)
                     {
                         if (row.Keeper.Errors.Count == 0)
                         {
                             if (!row.RuleString.IsEmpty())
                             {
                                 AddEvent("Генерация данных по шаблону", row.RuleString);
                             }
                             row.Generate(DataTabls, rec, subRec);
                         }
                     }
         }
     }
     catch (Exception ex)
     {
         AddError("Ошибка при генерации", ex, makedFile);
     }
 }
コード例 #3
0
        //Создание рабочего файла, возвращает ошибку или ""
        public string MakeWorkFile()
        {
            if (State != State.Compiled)
            {
                string s = CompileProject();
                if (s != "")
                {
                    return(s);
                }
            }
            StartAtom(Atom.MakeWorkFile);
            if (State == State.Closed)
            {
                AddError("Копилятор уже был закрыт");
            }
            else
            {
                try
                {
                    var    f  = new FileInfo(_projectFile);
                    string cd = _compiledDir;
                    if (cd.IsEmpty())
                    {
                        cd = f.DirectoryName;
                    }
                    cd        = (cd ?? "").EndsWith("\\") ? cd : cd + "\\";
                    _workFile = cd + f.Name.Substring(0, f.Name.Length - f.Extension.Length) + "_Work" + f.Extension;
                    Procent   = 10;
                    AddEvent("Копирование в новый файл", _workFile);
                    f.CopyTo(_workFile, true);

                    Procent = 30;
                    AddEvent("Очистка расчетных параметров");
                    using (var db = new DaoDb(_workFile))
                    {
                        db.Execute("DELETE CalcParams.* FROM CalcParams WHERE CalcOn=False");
                        db.Execute("DELETE CalcSubParams.* FROM CalcSubParams WHERE CalcOn=False");
                        Procent = 40;
                        db.Execute("UPDATE CalcParams SET UserExpr1=Null, UserExpr2=Null");
                        db.Execute("UPDATE CalcSubParams SET UserExpr1=Null, UserExpr2=Null");

                        Procent = 50;
                        AddEvent("Удаление таблиц");
                        db.Database.TableDefs.Delete("Signals");
                        db.Database.TableDefs.Delete("Objects");
                        db.Database.TableDefs.Delete("TracesTemplates");
                    }

                    Procent = 60;
                    AddEvent("Сжатие базы", _workFile);
                    DaoDb.Compress(_workFile, 20000000, _tmpDir, 2000);
                }
                catch (Exception ex)
                {
                    AddError("Ошибка при сжатии скомпилированного проекта", ex);
                }
            }
            return(FinishAtom(State.Compiled, State.Signals, "Проект: " + _code + ";  Ошибок: " + ErrorsCount + ";" + Different.NewLine
                              + "Параметров: " + CalcParamsId.Count + "; Архивных параметров:" + ArchiveParams.Count + ";  Сигналов: " + SignalsInUseCount));
        }
コード例 #4
0
 //Запись списка колонок и формирование колонок таблиц Params и VedLin
 private void MakeColumnsAndFilters()
 {
     AddEvent("Формирование колонок ведомости");
     using (var rec = new RecDao(_vedDb, "VedColumns"))
         foreach (var column in _columns)
         {
             column.ToRecordset(rec);
         }
     _vedDb.Execute("INSERT INTO VedColumnsFormatConditions SELECT VedColumnsFormatConditions.* FROM [" + _project.File + "].VedColumnsFormatConditions " +
                    "INNER JOIN [" + _project.File + "].VedColumns ON VedColumnsFormatConditions.ParentId = VedColumns.ColumnId " +
                    "WHERE VedColumns.Task='" + _task + "' ORDER BY ColumnNum");
     _vedDb.Execute("INSERT INTO VedFilters ( Otm, FilterId, FilterNum, FilterType, FilterName, FilterValue, FilterDescription, FilterDefault ) " +
                    "SELECT VedFilters.Otm, VedFilters.FilterId, VedFilters.FilterNum, VedFilters.FilterType, VedFilters.FilterName, VedFilters.FilterValue, VedFilters.FilterDescription, VedFilters.FilterDefault " +
                    "FROM [" + _project.File + "].VedFilters" + (_allTasks ? "" : " WHERE VedFilters.Task='" + _task + "';"));
     _vedDb.Execute("INSERT INTO VedFiltersObjects SELECT VedFiltersObjects.* " +
                    "FROM [" + _project.File + "].VedFilters INNER JOIN [" + _project.File + "].VedFiltersObjects ON VedFilters.FilterId = VedFiltersObjects.ParentId" +
                    (_allTasks ? "" : " WHERE VedFilters.Task='" + _task + "';"));
     foreach (var col in _columnsVed.Values)
     {
         _vedDb.SetColumn("VedLin", col.Code, col.DataType);
     }
     foreach (var col in _columnsParams.Values)
     {
         _vedDb.SetColumn("Params", col.Code, col.DataType);
         //if (col.LinVedView != VedView.None)
         //    _vedDb.SetColumn("VedLin", col.Code, col.DataType);
     }
 }
コード例 #5
0
 //Очистка таблиц CalcParams и т.д.
 private void ClearProject()
 {
     AddEvent("Очистка таблиц параметров проекта");
     using (var pdb = new DaoDb(_projectFile))
     {
         pdb.Execute("DELETE * FROM CalcSubParams");
         pdb.Execute("DELETE * FROM CalcParams");
     }
     DaoDb.Compress(_templateFile, 300000000, _infoTaskDir + @"Tmp\");
 }
コード例 #6
0
        private void butOK_Click(object sender, EventArgs e)
        {
            if (GroupCode.Text.IsEmpty())
            {
                Different.MessageError("Не заполнено имя группы");
                return;
            }
            ChangeReportsRow();
            using (var db = new DaoDb(General.ReporterFile))
            {
                //Сохранение в ReporterData
                using (var rec = new RecDao(db, "SELECT * FROM GroupReports WHERE GroupId=" + _groupId))
                {
                    rec.Put("GroupCode", GroupCode.Text);
                    rec.Put("GroupName", GroupName.Text);
                    ((FormGroupReports)GeneralRep.CommonBook.Forms[ReporterCommand.GroupReports]).EditItem(rec, _groupId);
                }

                db.Execute("DELETE * FROM ReportsForGroup WHERE GroupId=" + _groupId);
                using (var rec = new RecDao(db, "ReportsForGroup"))
                    foreach (DataGridViewRow row in Reports.Rows)
                    {
                        if (!row.IsNewRow)
                        {
                            rec.AddNew();
                            rec.Put("GroupId", _groupId);
                            rec.PutFromDataGrid("Report", row);
                            rec.PutFromDataGrid("ReportName", row);
                            rec.PutFromDataGrid("ReportFile", row);
                            rec.PutFromDataGrid("ReportTag", row);
                        }
                    }
            }
            Close();
        }
コード例 #7
0
 private void ButDelete_Click(object sender, EventArgs e)
 {
     if (GroupReports.SelectedItems.Count > 0)
     {
         var item = GroupReports.SelectedItems[0];
         if (Different.MessageQuestion("Удалить группу отчетов " + item.SubItems[0].Text + "?", "Удаление"))
         {
             GroupReports.Items.Remove(item);
             var id = (int)item.Tag;
             using (var db = new DaoDb(General.ReporterFile))
             {
                 db.Execute("DELETE * FROM ReportsForGroup WHERE GroupId=" + id);
                 db.Execute("DELETE * FROM GroupReports WHERE GroupId=" + id);
             }
         }
     }
 }
コード例 #8
0
        //Сохранение данных после настройки
        public void SaveSetup()
        {
            try
            {
                AddEvent("Сохранение настроек");
                using (var db = new DaoDb(General.ControllerFile))
                {
                    using (var rec = new RecDao(db, "SELECT * FROM Threads WHERE ThreadId=" + Id))
                    {
                        rec.Put("Comment", Comment);
                        rec.Put("IsPeriodic", IsPeriodic);
                        rec.Put("PeriodLength", PeriodLength);
                        rec.Put("SourcesLate", SourcesLate);
                        rec.Put("RushWaitingTime", RushWaitingTime);
                        rec.Put("TimeAfterError", TimeAfterError);
                        rec.Put("TimeChange", DateTime.Now.ToString());
                        rec.Put("IsImit", IsImit);
                        rec.Put("ImitMode", ImitModeStr);
                    }

                    db.Execute("DELETE * FROM Projects WHERE ThreadId=" + Id);
                    using (var rec = new RecDao(db, "Projects"))
                        foreach (var pr in Projects.Values)
                        {
                            pr.ToRecordset(rec, true);
                        }

                    db.Execute("DELETE * FROM Providers WHERE ThreadId=" + Id);
                    using (var rec = new RecDao(db, "Providers"))
                        foreach (var p in ProvidersDic.Values)
                        {
                            p.ToRecordset(rec, true);
                        }
                }
            }
            catch (Exception ex)
            {
                AddError("Ошибка при сохранении настроек", ex);
                Different.MessageError("Ошибка при сохранении настроек");
            }
            Finish();//Setup
            StartAtom(Atom.ReadSetup, ReadSetup);
            State = State.Stopped;
        }
コード例 #9
0
        //Формирование списка параметров для записи в архив и запись их в CalcParamsArchive
        private void SaveArchive()
        {
            try
            {
                using (var db = new DaoDb(_projectFile))
                {
                    foreach (var cp in CalcParamsId.Values)
                    {
                        if (cp.Inputs.Count == 0 && cp.CalcOn && cp.ErrMess == "")
                        {
                            new ParamArchive(cp);
                        }
                    }

                    var old = new SetS();
                    var add = new SetS();
                    using (var rec = new RecDao(db, "CalcParamsArchive", RecordsetTypeEnum.dbOpenTable))
                        while (rec.Read())
                        {
                            var code = rec.GetString("FullCode");
                            if (ArchiveParams.ContainsKey(code))
                            {
                                old.Add(code);
                            }
                            else
                            {
                                rec.Put("Del", true);
                            }
                        }
                    db.Execute("DELETE * FROM CalcParamsArchive WHERE Del=True");

                    foreach (var ap in ArchiveParams.Keys)
                    {
                        if (!old.Contains(ap))
                        {
                            add.Add(ap);
                        }
                    }
                    using (var rec = new RecDao(db, "CalcParamsArchive", RecordsetTypeEnum.dbOpenTable))
                    {
                        while (rec.Read())
                        {
                            ArchiveParams[rec.GetString("FullCode")].ToRecordset(rec, false);
                        }
                        foreach (var p in add.Keys)
                        {
                            ArchiveParams[p].ToRecordset(rec, true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AddError("Ошибка сохранения архивных параметров", ex);
            }
        }
コード例 #10
0
 //Открывает рекордсет Projects, удаляет оттуда проект и закрывает
 public void DeleteFromDb()
 {
     try
     {
         DaoDb.Execute(General.ControllerFile, "DELETE * FROM Projects WHERE (ThreadId=" + Id + ") And (Project='" + Code + "')");
     }
     catch (Exception ex)
     {
         ThreadCalc.AddError("Ошибка при удалении проекта из ControllerData", ex, Code);
     }
 }
コード例 #11
0
 //Удаление потока
 public void DeleteThread()
 {
     using (StartAtom(Atom.DeleteThread))
     {
         try
         {
             DaoDb.Execute(General.ControllerFile, "DELETE * FROM Threads WHERE ThreadId=" + Id);
         }
         catch (Exception ex)
         {
             AddError("Ошибка при удалении потока", ex);
         }
     }
     CloseThread();
 }
コード例 #12
0
ファイル: DaoDbTest.cs プロジェクト: martugin/InfoTask2
        public void DaoDbStatic()
        {
            var    db        = CopyDb("Static");
            string file      = File("Static");
            string fileWrong = File("Static2");
            string fileCopy  = File("Copy");
            string fileTmp   = TestLib.TestRunDir + @"Libraries\TmpDaoStatic.accdb";

            db.Dispose();
            Assert.IsNull(db.Database);
            Assert.IsNull(db.Connection);
            Assert.IsTrue(DaoDb.Check(file, "DaoTest"));
            Assert.IsTrue(DaoDb.Check(file, "DaoTest", new[] { "Tabl", "SubTabl", "EmptyTabl", "SysTabl", "SysSubTabl" }));
            Assert.IsTrue(DaoDb.Check(file, new[] { "Tabl", "SubTabl", "EmptyTabl" }));
            Assert.IsFalse(DaoDb.Check(fileWrong, "Fignia"));
            Assert.IsFalse(DaoDb.Check(null, "Fignia"));
            Assert.IsFalse(DaoDb.Check(fileWrong, "Fignia"));
            Assert.IsFalse(DaoDb.Check(fileWrong, new[] { "Tabl" }));
            Assert.IsFalse(DaoDb.Check(file, new[] { "Tabl", "SubTabl", "EmptyTabl1" }));

            DaoDb.Compress(file, 10000000);
            DaoDb.Compress(file, 10000);
            Assert.IsTrue(new FileInfo(fileTmp).Exists);

            Assert.IsTrue(DaoDb.FromTemplate(file, fileCopy, ReplaceByTemplate.Always));
            Assert.IsFalse(DaoDb.FromTemplate(file, fileCopy, ReplaceByTemplate.IfNotExists));
            Assert.IsFalse(DaoDb.FromTemplate(file, fileCopy, ReplaceByTemplate.IfNewVersion));
            new FileInfo(fileCopy).Delete();
            Assert.IsTrue(DaoDb.FromTemplate(file, fileCopy, ReplaceByTemplate.IfNotExists));
            new FileInfo(fileCopy).Delete();
            Assert.IsTrue(DaoDb.FromTemplate(file, fileCopy, ReplaceByTemplate.IfNewVersion));
            Assert.IsTrue(new FileInfo(fileCopy).Exists);

            DaoDb.Execute(file, "DELETE * FROM Tabl");
            DaoDb.ExecuteAdo(file, "DELETE * FROM SysTabl");
            using (var rec = new AdoReader(file, "SELECT * FROM Tabl"))
                Assert.IsFalse(rec.HasRows);
            using (var rec = new AdoReader(file, "SELECT * FROM SubTabl"))
                Assert.IsFalse(rec.HasRows);
            using (var rec = new DaoRec(file, "SysTabl"))
                Assert.IsFalse(rec.HasRows);
            using (var rec = new DaoRec(file, "SysSubTabl"))
                Assert.IsFalse(rec.HasRows);
        }
コード例 #13
0
 public static ActionResult ConfigFillProjectManagerU(Session session)
 {
     session.Log("Begin ConfigFillProjectManagerU");
     try
     {
         var instlocPath = new FileInfo(session.GetTargetPath("INSTALLLOCATION") + "General\\Config.accdb");
         if (instlocPath.Exists)
         {
             DaoDb.Execute(session.GetTargetPath("INSTALLLOCATION") + "General\\Config.accdb",
                           "DELETE * FROM SysTabl WHERE ParamName='ProjectManager'");
         }
     }
     catch (Exception exception)
     {
         exception.MessageError();
     }
     session.Log("End ConfigFillProjectManagerU");
     return(ActionResult.Success);
 }
コード例 #14
0
 private static void CopySubProp(int tid, DaoDb tdb, int id, DaoDb db)
 {
     using (var rec = new RecDao(tdb, "SELECT * FROM SysSubTabl WHERE ParamId=" + tid))
     {
         db.Execute("DELETE * FROM SysSubTabl WHERE ParamId=" + id);
         using (var res = new RecDao(db, "SELECT * FROM SysSubTabl WHERE ParamId=" + id))
             while (rec.Read())
             {
                 res.AddNew();
                 res.Put("ParamId", id);
                 res.Put("SubParamNum", rec.GetInt("SubParamNum"));
                 res.Put("SubParamType", rec.GetString("SubParamType"));
                 res.Put("SubParamName", rec.GetString("SubParamName"));
                 res.Put("SubParamValue", rec.GetString("SubParamValue"));
                 res.Put("SubParamDescription", rec.GetString("SubParamDescription"));
                 res.Put("SubParamTag", rec.GetString("SubParamTag"));
                 res.Put("SubParamRowSource", rec.GetString("SubParamRowSource"));
             }
     }
 }
コード例 #15
0
        public static ActionResult ConfigFillWU(Session session)
        {
            session.Log("Begin ConfigFillWonderwareU");
            try
            {
                var instlocPath = new FileInfo(session.GetTargetPath("INSTALLLOCATION") + "General\\Config.accdb");
                if (instlocPath.Exists)
                {
                    DaoDb.Execute(session.GetTargetPath("INSTALLLOCATION") + "General\\Config.accdb",
                                  "DELETE * FROM SysTabl WHERE ParamName='WonderwareHistorianComm' OR ParamName='WonderwareHistorianSource' OR ParamName='WonderwareOPCReceiver'");
                }
            }
            catch (Exception exception)
            {
                exception.MessageError();
            }
            session.Log("End ConfigFillWonderwareU");

            return(ActionResult.Success);
        }
コード例 #16
0
 //Чтение данных из клона
 private void GetCloneValues()
 {
     if (!IsConnected && !Connect())
     {
         return;
     }
     try
     {
         using (var db = new DaoDb(DatabaseFile))
         {
             db.Execute("DELETE * FROM SignalsForRead");
             Logger.Procent = 10;
             using (var rs = new RecDao(db, "SignalsForRead"))
                 foreach (int id in _objectsId.Keys)
                 {
                     rs.AddNew();
                     rs.Put("Id", id);
                 }
         }
         Logger.Procent = 20;
         int      n   = ParamsWithCut();
         DateTime beg = n == 0 ? _begin : _begin.AddHours(-1);
         Logger.AddEvent("Получение значений", _objectsId.Count + " сигналов, " + n + " без среза, время: " + beg + " - " + _end);
         var stSql = "SELECT SignalsForRead.Id AS ID, TIMESTAMP, TIME_NSEC, F_VALUE, RAW_VALUE, STS " + "FROM PT_HF_HIST INNER JOIN SignalsForRead ON PT_HF_HIST.ID = SignalsForRead.Id "
                     + "WHERE (TIMESTAMP >= " + beg.ToAccessString() + ") AND (TIMESTAMP < " + _end.ToAccessString() + ") " + "ORDER BY TIMESTAMP, TIME_NSEC";
         using (var rec = new ReaderAdo(DatabaseFile, stSql))
         {
             Logger.Procent = 40;
             Logger.AddEvent("Распределение значений по сигналам");
             var m = ReadValuesList(rec, _objectsId.Values);
             Logger.AddEvent("Значения прочитаны", m + " значений, " + _objectsId.Count + " сигналов");
         }
     }
     catch (Exception ex)
     {
         AddError("Ошибка при чтении клона архива", ex);
         IsConnected = false;
     }
 }
コード例 #17
0
 //Обновление списка параметров в файле данных отчета из архивов и проектов
 private bool ParamsProjectsToFile()
 {
     try
     {
         bool b    = false;
         var  list = MakeProjectsList();
         foreach (var p in list)
         {
             b |= p.UpdateParams();
         }
         if (b)
         {
             DaoDb.Execute(DataFile, "DELETE Cells.* FROM CalcParams INNER JOIN Cells ON CalcParams.ParamId = Cells.ParamId WHERE CalcParams.SysField='Del';");
             DaoDb.Execute(DataFile, "DELETE * FROM CalcParams WHERE SysField='Del'");
         }
         return(b);
     }
     catch (Exception ex)
     {
         AddError("Ошибка при обновлении списка параметров", ex);
     }
     return(false);
 }
コード例 #18
0
        //Запись используемых сигналов в SignalsInUse
        private void SaveInUse()
        {
            try
            {
                using (var db = new DaoDb(_projectFile))
                {
                    var old = new SetS();
                    using (var rec = new RecDao(db, "SignalsInUse"))
                    {
                        while (rec.Read())
                        {
                            var code = rec.GetString("FullCode");
                            if ((Signals.ContainsKey(code) && Signals[code].InUse) || HandSignals.ContainsKey(code))
                            {
                                old.Add(code);
                                rec.Put("Del", false);
                            }
                            else
                            {
                                rec.Put("Del", true);
                            }
                        }
                    }
                    db.Execute("DELETE * FROM SignalsInUse WHERE Del=True");
                    var add = new SetS();
                    var use = from s in SignalsList where s.InUse select s;
                    SignalsInUseCount = use.Count();
                    foreach (var s in use)
                    {
                        if (!old.Contains(s.FullCode))
                        {
                            add.Add(s.FullCode);
                        }
                        if (s.InUseSource)
                        {
                            UsedProviders.Add(s.SourceName);
                        }
                        if (s.InUseReceiver)
                        {
                            UsedProviders.Add(s.ReceiverName);
                        }
                    }
                    if (HandSignals.Count > 0 && HandInputSource != null)
                    {
                        UsedProviders.Add(HandInputSource);
                    }
                    foreach (var hand in HandSignals.Values)
                    {
                        if (!old.Contains(hand.FullCode))
                        {
                            add.Add(hand.FullCode);
                        }
                    }

                    using (var rec = new RecDao(db, "SignalsInUse"))
                    {
                        while (rec.Read())
                        {
                            var    s   = rec.GetString("FullCode");
                            Signal sig = Signals.ContainsKey(s) ? Signals[s] : HandSignals[s];
                            sig.ToRecordset(rec, false);
                        }
                        foreach (var s in add.Keys)
                        {
                            Signal sig = Signals.ContainsKey(s) ? Signals[s] : HandSignals[s];
                            sig.ToRecordset(rec, true);
                        }
                    }
                    using (var rec = new RecDao(db, "GraficsList"))
                        while (rec.Read())
                        {
                            rec.Put("UsedUnits", UsingParamsString(Grafics[rec.GetString("Code")].UsingParams));
                        }
                }
            }
            catch (Exception ex)
            {
                AddError("Ошибка сохранения сигналов или графиков", ex);
            }
        }
コード例 #19
0
        //Запись в таблицу PrevParams
        private void SavePrevs()
        {
            try
            {
                using (var db = new DaoDb(_projectFile))
                {
                    var old = new SetS();
                    var add = new SetS();
                    using (var rec = new RecDao(db, "PrevParams"))
                        while (rec.Read())
                        {
                            var code = rec.GetString("FullCode");
                            if (Prevs.ContainsKey(code) && Prevs[code].Id != 0)
                            {
                                old.Add(code);
                                rec.Put("Del", false);
                            }
                            else
                            {
                                rec.Put("Del", true);
                            }
                        }
                    db.Execute("DELETE * FROM PrevParams WHERE Del=True");

                    foreach (var prev in Prevs.Keys)
                    {
                        if (!old.Contains(prev))
                        {
                            add.Add(prev);
                        }
                    }
                    if (Prevs.Count > 0)
                    {
                        using (var rec = new RecDao(db, "PrevParams"))
                        {
                            while (rec.Read())
                            {
                                Prevs[rec.GetString("FullCode")].ToRecordset(rec, false);
                            }
                            foreach (var p in add.Keys)
                            {
                                Prevs[p].ToRecordset(rec, true);
                            }
                        }
                    }

                    foreach (var p in Prevs.Values)
                    {
                        IsPrevAbs     |= p.PrevAbs;
                        IsLastBase    |= p.LastBase;
                        IsLastHour    |= p.LastHour;
                        IsLastDay     |= p.LastDay;
                        IsManyBase    |= p.ManyBase;
                        IsManyHour    |= p.ManyHour;
                        IsManyDay     |= p.ManyDay;
                        IsManyMoments |= p.ManyMoments;
                    }
                }
            }
            catch (Exception ex)
            {
                AddError("Ошибка сохранения параметров фунций Пред", ex);
            }
        }
コード例 #20
0
        public static ActionResult ConfigFillITU(Session session)
        {
            session.Log("Begin ConfigFillITU");
            try
            {
                using (var db = new DaoDb(session.GetTargetPath("General") + "Config.accdb"))
                {
                    bool   cFlag = false;
                    string warnM = "Обнаружены установленные компоненты InfoTask:";
                    using (var cfg = new RecDao(db, "SELECT * FROM SysTabl"))
                    {
                        //Проверка, есть ли установленные иные компоненты ИТ
                        cfg.FindFirst("ParamName='Analyzer'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - Analyzer";
                        }
                        cfg.FindFirst("ParamName='AnalyzerInfoTask'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - AnalyzerInfoTask";
                        }
                        cfg.FindFirst("ParamName='Constructor'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - Constructor";
                        }
                        cfg.FindFirst("ParamName='Reporter'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - Reporter";
                        }
                        cfg.FindFirst("ParamName='KosmotronikaRetroSource'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - KosmotronikaProviders";
                        }
                        cfg.FindFirst("ParamName='OvationSource'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - OvationProviders";
                        }
                        cfg.FindFirst("ParamName='WonderwareHistorianSource'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - WonderwareProviders";
                        }
                        cfg.FindFirst("ParamName='SimaticSource'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - SiemensProviders";
                        }
                        cfg.FindFirst("ParamName='MirSource'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - MirProviders";
                        }
                        cfg.FindFirst("ParamName='PrologSource'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - LogikaProviders";
                        }
                        cfg.FindFirst("ParamName='RasOvation'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - RAS";
                        }
                        cfg.FindFirst("ParamName='RasKosmotronika'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - RasKosmotronika";
                        }
                        cfg.FindFirst("ParamName='RasInfoTask'");
                        if (!cfg.NoMatch())
                        {
                            cFlag  = true;
                            warnM += "\n  - RasInfoTask";
                        }
                    }
                    if (cFlag)
                    {
                        warnM += "\n Необходимо удалить/переустановить и их";
                        MessageBox.Show(warnM);
                        //return ActionResult.UserExit;
                    }

                    if (session.Features["KernelMainFeature"].RequestState == InstallState.Absent)
                    {
                        db.Execute("DELETE * FROM SysTabl WHERE ParamName='InfoTask' OR ParamName='AccessArchive' OR ParamName='SQLServerArchive' " +
                                   "OR ParamName='ArchiveProjectComm' OR ParamName='ArchiveAccessComm' OR ParamName='ArchiveSQLServerComm' OR ParamName='ArchiveAccessSource' " +
                                   "OR ParamName='ArchiveSQLServerSource' OR ParamName='Imitator' OR ParamName='CloneComm' OR ParamName='CloneSource' " +
                                   "OR ParamName='HandInputSource' OR ParamName='HandInputSqlSource' OR ParamName='MonitorHistory'");
                    }

                    if (session.Features["ControllerMonitorFeature"].RequestState == InstallState.Absent)
                    {
                        db.Execute("DELETE * FROM SysTabl WHERE ParamName='Controller'");
                    }
                    if (session.Features["CalcArchiveViewerFeature"].RequestState == InstallState.Absent)
                    {
                        db.Execute("DELETE * FROM SysTabl WHERE ParamName='CalcArchiveViewer'");
                    }
                }
            }
            catch (Exception exception)
            {
                //return ActionResult.UserExit;
                exception.MessageError();
            }
            session.Log("End ConfigFillITU");
            return(ActionResult.Success);
        }
コード例 #21
0
 private void Update_1_0_4()
 {
     //ObjectReceivers	Удалена
     _db.Execute("DROP TABLE ObjectReceivers");
 }
コード例 #22
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());
                        }
                    }
                }
            }
        }
コード例 #23
0
        private void butOK_Click(object sender, EventArgs e)
        {
            using (_book.StartAtom("Сохранение настроек"))
            {
                _book.AddEvent("Сохранение настроек отчета");
                if (CodeReport.Text.IsEmpty())
                {
                    Different.MessageError("Код отчета должен быть заполнен");
                    return;
                }
                int  res;
                bool er = (!MonthLength.Text.IsEmpty() && (!int.TryParse(MonthLength.Text, out res) || res < 0));
                er |= (!DayLength.Text.IsEmpty() && (!int.TryParse(DayLength.Text, out res) || res < 0));
                er |= (!HourLength.Text.IsEmpty() && (!int.TryParse(HourLength.Text, out res) || res < 0));
                er |= (!MinuteLength.Text.IsEmpty() && (!int.TryParse(MinuteLength.Text, out res) || res < 0));
                er |= (!DayStart.Text.IsEmpty() && (!int.TryParse(DayStart.Text, out res) || res < 0));
                er |= (!HourStart.Text.IsEmpty() && (!int.TryParse(HourStart.Text, out res) || res < 0));
                er |= (!MinuteLength.Text.IsEmpty() && (!int.TryParse(MinuteLength.Text, out res) || res < 0));
                if (er)
                {
                    Different.MessageError("Указана недопустимая длительность или начало интеравала");
                    return;
                }

                var  sys        = _book.SysPage;
                bool isInternal = false;
                try
                {
                    sys.PutValue("Report", CodeReport.Text);
                    sys.PutValue("ReportName", NameReport.Text);
                    sys.PutValue("ReportDescription", DescriptionReport.Text);
                    sys.PutControl(MonthLength);
                    sys.PutControl(DayLength);
                    sys.PutControl(HourLength);
                    sys.PutControl(MinuteLength);
                    sys.PutControl(DayStart);
                    sys.PutControl(HourStart);
                    sys.PutControl(MinuteStart);
                    sys.PutValue("DifferentLength", radioDifferent.Checked ? "True" : (radioLess.Checked ? "Less" : "Equals"));
                    if (radioNow.Checked)
                    {
                        sys.PutValue("DefaultPeriod", "Now");
                    }
                    if (radioPrevious.Checked)
                    {
                        sys.PutValue("DefaultPeriod", "Previous");
                    }
                    sys.PutValue("DifferentBegin", DifferentBegin.Checked);
                    sys.PutValue("DefaultCalcName", CalcName.Text);
                    sys.PutValue("AllowProjectsRepetitions", AllowProjectsRepetitions.Checked);

                    var list = new List <ReportProjectSetup>();
                    foreach (DataGridViewRow r in Projects.Rows)
                    {
                        if (!r.IsNewRow)
                        {
                            try
                            {
                                var cmode = r.Get("ProjectCalcMode").ToCalcModeType();
                                isInternal |= cmode == CalcModeType.Internal;
                                list.Add(new ReportProjectSetup(r.Get("Project"), AllowProjectsRepetitions.Checked ? r.Get("ProjectCode2") : null, cmode));
                            }
                            catch { }
                        }
                    }
                    sys.PutProjects(list);
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Текущий файл не является файлом отчета InfoTask или был поврежден", ex);
                }

                try { tabMain.Select(); } catch {}
                _codes.Clear();
                _infs.Clear();
                foreach (DataGridViewRow row in Providers.Rows)
                {
                    string name = row.Get("ProviderName");
                    _codes.Add(name, row.Get("ProviderCode"));
                    _infs.Add(name, row.Get("ProviderInf"));
                }

                int tid;
                if (!int.TryParse(ThreadId.Text, out tid))
                {
                    tid = 0;
                }
                if (isInternal)
                {
                    try
                    {
                        _book.AddEvent("Сохранение настроек в ControllerData");
                        using (var db = new DaoDb(General.ControllerFile))
                        {
                            using (var rec = new RecDao(db, "SELECT * FROM Threads WHERE ThreadId=" + tid))
                            {
                                if (!rec.HasRows())
                                {
                                    rec.AddNew();
                                }
                                rec.Put("ApplicationType", "Excel");
                                rec.Put("IsImit", IsImit.Checked);
                                rec.Put("ImitMode", ImitMode.Text);
                                tid = rec.GetInt("ThreadId");
                            }
                            db.Execute("DELETE * FROM Providers WHERE ThreadId=" + tid);
                            db.Execute("DELETE * FROM Projects WHERE ThreadId=" + tid);
                            using (var rec = new RecDao(db, "Projects"))
                                using (var recc = new RecDao(db, "Providers"))
                                {
                                    foreach (DataGridViewRow row in Projects.Rows)
                                    {
                                        if (!row.IsNewRow && row.Get("ProjectCalcMode").ToCalcModeType() == CalcModeType.Internal)
                                        {
                                            rec.AddNew();
                                            rec.Put("ThreadId", tid);
                                            rec.PutFromDataGrid("Project", row);
                                            rec.PutFromDataGrid("ProjectFile", row);
                                        }
                                    }
                                    foreach (DataGridViewRow row in Providers.Rows)
                                    {
                                        if (row.Get("TypeProvider") != "Архив" || row.Get("ProviderName") == "CalcArchive" || (row.Get("ProviderName") == "Report_Archive" && UseOneArchive.Checked))
                                        {
                                            recc.AddNew();
                                            recc.Put("ThreadId", tid);
                                            recc.PutFromDataGrid("ProviderType", row, "TypeProvider");
                                            recc.PutFromDataGrid("ProviderCode", row);
                                            if (row.Get("ProviderName") != "Report_Archive")
                                            {
                                                recc.PutFromDataGrid("ProviderName", row);
                                            }
                                            else
                                            {
                                                recc.Put("ProviderName", "CalcArchive");
                                            }
                                            recc.PutFromDataGrid("ProviderInf", row);
                                            recc.Update();
                                        }
                                    }
                                }
                        }
                    }
                    catch (Exception ex)
                    {
                        GeneralRep.ShowError("Неправильный файл ControllerData.accdb", ex);
                        return;
                    }
                }

                _book.AddEvent("Сохранение настроек в ReporterData");
                try //Настройки отчета в ReporterData
                {
                    using (var db = new DaoDb(General.ReporterFile))
                    {
                        using (var rec = new RecDao(db, "SELECT * FROM Reports WHERE Report = '" + CodeReport.Text + "'"))
                        {
                            if (!rec.HasRows())
                            {
                                rec.AddNew();
                            }
                            rec.Put("Report", CodeReport.Text);
                            rec.Put("ReportName", NameReport.Text);
                            rec.Put("ReportDescription", DescriptionReport.Text);
                            rec.Put("ReportFile", GeneralRep.Application.ActiveWorkbook.FullName);
                            rec.Put("ThreadId", isInternal ? tid : 0);
                            rec.Put("UseOneArchive", UseOneArchive.Checked);
                            rec.Put("CodeArchive", _codes["Report_Archive"]);
                            rec.Put("InfArchive", _infs["Report_Archive"]);
                            string s = "FormTo=" + (FormToTemplate.Checked ? "Template" : (FormToDir.Checked ? "Dir" : "File")) + ";";
                            s += "ResultDir=" + ResultDir.Text + ";";
                            s += "ResultFileName=" + ResultFileName.Text + ";";
                            s += "ResultFile=" + ResultFile.Text + ";";

                            s += "AddDateToName=" + (AddDateToName.Checked ? "True" : "False") + ";";
                            var df = DateNameFormat.Text;
                            if (AddDateToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*")))
                            {
                                Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]");
                                return;
                            }
                            s += "DateNameFormat=" + df + ";";

                            s += "AddBeginToName=" + (AddBeginToName.Checked ? "True" : "False") + ";";
                            df = BeginNameFormat.Text;
                            if (AddBeginToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*")))
                            {
                                Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]");
                                return;
                            }
                            s += "BeginNameFormat=" + df + ";";

                            s += "AddEndToName=" + (AddEndToName.Checked ? "True" : "False") + ";";
                            df = EndNameFormat.Text;
                            if (AddEndToName.Checked && (df.Contains(":") || df.Contains(@"\") || df.Contains(@"/") || df.Contains("[") || df.Contains("]") || df.Contains("*")))
                            {
                                Different.MessageError(@"Указан недопустимый формат даты для имени файла или листа. Имя не должно содержать символов / \ : * [ ]");
                                return;
                            }
                            s += "EndNameFormat=" + df + ";";

                            s += "AddCalcNameToName=" + (AddCalcNameToName.Checked ? "True" : "False") + ";";
                            s += "AddSheetToName=" + (AddSheetToName.Checked ? "True" : "False") + ";";
                            s += "SetFocusToFormed=" + (SetFocusToFormed.Checked ? "True" : "False") + ";";
                            rec.Put("FormInf", s);
                            rec.Put("ServerReport", ServerReport.Text);
                            if (!ServerReport.Text.IsEmpty())
                            {
                                var file = new FileInfo(ServerReport.Text);
                                if (!file.Exists || file.Extension != ".xlsx")
                                {
                                    Different.MessageError("Указанный файл контрольного экземпляра не существует или не является файлом Excel, " + ServerReport.Text);
                                }
                                else if (ServerReport.Text == _book.Workbook.FullName)
                                {
                                    Different.MessageError("Файл контрольного бланка расчета не должен совпадать с файлом бланка отчета, " + ServerReport.Text);
                                }
                            }

                            int rid = rec.GetInt("ReportId");
                            rec.Update();
                            db.Execute("DELETE * FROM Projects WHERE ReportId=" + rid);
                            using (var recp = new RecDao(db, "Projects"))
                                foreach (DataGridViewRow r  in Projects.Rows)
                                {
                                    if (!r.IsNewRow)
                                    {
                                        recp.AddNew();
                                        recp.Put("ReportId", rid);
                                        recp.PutFromDataGrid("Project", r);
                                        if (AllowProjectsRepetitions.Checked)
                                        {
                                            recp.PutFromDataGrid("ProjectCode2", r);
                                        }
                                        recp.PutFromDataGrid("ProjectName", r);
                                        recp.PutFromDataGrid("ProjectFile", r);
                                        if (UseOneArchive.Checked)
                                        {
                                            recp.Put("CodeArchive", _codes["Report_Archive"]);
                                            recp.Put("InfArchive", _infs["Report_Archive"]);
                                        }
                                        else if (r.Get("ProjectCalcMode").ToCalcModeType() == CalcModeType.Internal)
                                        {
                                            recp.Put("CodeArchive", _codes["CalcArchive"]);
                                            recp.Put("InfArchive", _infs["CalcArchive"]);
                                        }
                                        else
                                        {
                                            var proj = r.Get("Project");
                                            if (AllowProjectsRepetitions.Checked && !r.Get("ProjectCode2").IsEmpty())
                                            {
                                                proj = r.Get("ProjectCode2");
                                            }
                                            proj += "_Archive";
                                            recp.Put("CodeArchive", _codes[proj]);
                                            recp.Put("InfArchive", _infs[proj]);
                                        }
                                    }
                                }
                        }
                    }
                }
                catch (Exception ex)
                {
                    GeneralRep.ShowError("Неправильный файл ReporterData.accdb", ex);
                }

                _book.ClearReportDataFromMemory();
                CheckProviders();
                Close();
            }
        }
コード例 #24
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); }
        }
コード例 #25
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);
         }
     }
 }
コード例 #26
0
        //Обновление списка проектов в файле данных отчета
        private IEnumerable <ReportProjectForData> MakeProjectsList()
        {
            AddEvent("Обновление списка проектов");
            var plist = new DicS <ReportProjectForData>();

            try
            {
                using (var rec = new RecDao(General.ReporterFile, "SELECT Reports.Report, Projects.* FROM Reports INNER JOIN Projects ON Reports.ReportId = Projects.ReportId WHERE Report='" + Code + "'"))
                    while (rec.Read())
                    {
                        var p = new ReportProjectForData(this, rec);
                        plist.Add(p.CodeFinal, p);
                    }

                foreach (var pr in SysPage.GetProjects().Values)
                {
                    if (plist.ContainsKey(pr.CodeFinal))
                    {
                        plist[pr.CodeFinal].CalcMode = pr.CalcMode;
                    }
                }
                foreach (var pr in plist.Values)
                {
                    pr.GetChangeTime();
                }
                using (var db = new DaoDb(DataFile))
                {
                    var dic = new SetS();
                    using (var rec = new RecDao(db, "SELECT * FROM Projects"))
                    {
                        while (rec.Read())
                        {
                            var code = rec.GetString("Project");
                            if (code != "Сохранение" && code != "Системные")
                            {
                                if (!plist.ContainsKey(code))
                                {
                                    rec.Put("SysField", "Del");
                                }
                                else
                                {
                                    dic.Add(code);
                                    rec.Put("SysField", "");
                                    plist[code].DataChangeTime = rec.GetTime("LastChange");
                                    plist[code].ToRecordset(rec, false);
                                }
                            }
                        }
                        foreach (var p in plist.Values)
                        {
                            if (!dic.Contains(p.Code))
                            {
                                p.ToRecordset(rec, true);
                            }
                        }
                    }
                    db.Execute("DELETE Cells.* FROM Projects INNER JOIN (CalcParams INNER JOIN Cells ON CalcParams.ParamId = Cells.ParamId) ON Projects.Project = CalcParams.Project WHERE Projects.SysField='Del';");
                    db.Execute("DELETE CalcParams.* FROM Projects INNER JOIN CalcParams ON Projects.Project = CalcParams.Project WHERE Projects.SysField='Del';");
                    db.Execute("DELETE * FROM Projects WHERE Projects.SysField='Del'");
                }
            }
            catch (Exception ex)
            {
                AddError("Ошибка при работе с ReporterData, архивом или файлом данных отчета", ex);
            }
            return(plist.Values);
        }