Esempio n. 1
0
 //Загрузка структур таблиц
 private void LoadTabls()
 {
     AddEvent("Загрузка структур таблиц");
     Tabls = new TablsList();
     using (var db = new DaoDb(Dir + "Tables.accdb"))
         Tabls.AddDbStructs(db);
 }
Esempio n. 2
0
        public void TablsList()
        {
            var tdir = Different.GetTestInfoTaskDir() + @"CommonTypes\Tabls\TablsList\";
            var tdb  = new DaoDb(tdir + "Project1GenData.accdb");
            {
                var tlist = new TablsList(tdb);
                Assert.IsNotNull(tlist.Tabls);
                Assert.IsTrue(tlist.Tabls.ContainsKey("T1"));
                var t = tlist.Tabls["T1"];
                Assert.AreEqual("T1", t.Code);
                Assert.AreEqual(1, t.MaxLevel);
                Assert.AreEqual(2, t.Fields.Count);
                Assert.AreEqual(2, t.Fields[0].Count);
                Assert.AreEqual(2, t.FieldsNums[0].Count);
                Assert.IsTrue(new TablField("StringField", 0, DataType.String).IsEquals(t.FieldsNums[0][0]));
                Assert.IsTrue(new TablField("IntField", 1, DataType.Integer).IsEquals(t.FieldsNums[0][1]));
                Assert.AreEqual(2, t.Fields[1].Count);
                Assert.AreEqual(2, t.FieldsNums[1].Count);
                Assert.IsTrue(new TablField("StringSub", 0, DataType.String).IsEquals(t.FieldsNums[1][0]));
                Assert.IsTrue(new TablField("IntSub", 1, DataType.Integer).IsEquals(t.FieldsNums[1][1]));

                Assert.IsTrue(tlist.Tabls.ContainsKey("T2"));
                t = tlist.Tabls["T2"];
                Assert.AreEqual("T2", t.Code);
                Assert.AreEqual(0, t.MaxLevel);
                Assert.AreEqual(1, t.Fields.Count);
                Assert.AreEqual(1, t.Fields[0].Count);
            }
        }
Esempio n. 3
0
        //Загружает в форму информацию о группе отчетов
        public void LoadGroup(int groupId)
        {
            _groupId = groupId;
            using (var db = new DaoDb(General.ReporterFile))
            {
                using (var rec = new ReaderAdo(db, "SELECT * FROM GroupReports WHERE GroupId=" + groupId))
                    if (rec.HasRows())
                    {
                        GroupCode.Text = rec.GetString("GroupCode");
                        GroupName.Text = rec.GetString("GroupName");
                    }

                Reports.Rows.Clear();
                using (var rec = new ReaderAdo(db, "SELECT * FROM ReportsForGroup WHERE GroupId=" + groupId))
                    while (rec.Read())
                    {
                        var row = Reports.Rows[Reports.Rows.Add()];
                        rec.GetToDataGrid("Report", row);
                        rec.GetToDataGrid("ReportName", row);
                        rec.GetToDataGrid("ReportFile", row);
                        rec.GetToDataGrid("ReportTag", row);
                    }
            }
            if (Reports.Rows.Count > 0)
            {
                Reports.Rows[0].Selected = true;
            }
            _isLoaded = true;
            ChangeReportsRow();
        }
Esempio n. 4
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));
        }
Esempio n. 5
0
 //Создание клона источника
 public void MakeClone(string cloneDir) //Каталог клона
 {
     using (StartProgress("Создание клона"))
         using (StartLog(0, 100, "Создание клона источника"))
             try
             {
                 using (var db = new DaoDb(cloneDir.EndDir() + "Clone.accdb"))
                 {
                     //using (var sys = new SysTabl(db))
                     //{
                     //    Complect = sys.Value("CloneComplect");
                     //    var pr = _providersFactory.CreateProvider(Logger, sys.Value("SourceCode"), sys.Value("SourceInf"));
                     //    JoinProvider(pr);
                     //}
                     ReadCloneSignals(db);
                     using (CloneRec = new DaoRec(db, "MomentValues"))
                         using (CloneCutRec = new DaoRec(db, "MomentValuesCut"))
                             using (CloneStrRec = new DaoRec(db, "MomentStrValues"))
                                 using (CloneStrCutRec = new DaoRec(db, "MomentStrValuesCut"))
                                     using (CloneErrorsRec = new DaoRec(db, "ErrorsObjects"))
                                         GetValues();
                     WriteMomentErrors(db);
                 }
             }
             catch (Exception ex)
             {
                 AddError("Ошибка при создании клона", ex);
             }
 }
Esempio n. 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();
        }
Esempio n. 7
0
 //Загрузка значений всех таблиц одной базы
 public void LoadValues(DaoDb db,
                        bool onlyOtm)            //Загружать только отмеченные ряды
 {
     foreach (var s in Structs.Dic)
     {
         if (s.Value.DbFile == db.File)
         {
             var tabl = Tabls.Add(s.Key, new Tabl(s.Value.Tabls.Count));
             foreach (var tsi in s.Value.Tabls.Values)
             {
                 if (tsi.Level >= 0)
                 {
                     using (var rec = new DaoRec(db, tsi.TableName))
                         while (rec.Read())
                         {
                             if (!onlyOtm || (rec.ContainsField("Otm") && rec.GetBool("Otm")))
                             {
                                 tabl.AddRow(tsi.Level, new TablRow(rec), true);
                             }
                         }
                 }
             }
         }
     }
 }
Esempio n. 8
0
 //Сгенерировать
 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);
     }
 }
Esempio n. 9
0
        //Сравнение двух таблиц на полное совпадение,
        public static bool CompareTables(DaoDb db1, DaoDb db2,                                           //Базы данных для сравнения
                                         string tableName,                                               //Имяы таблицы
                                         string idField, string idField2 = null, string idField3 = null, //Ключевые поля для сравнения
                                         string tableName2 = null,                                       //Имя таблицы во второй базе, если отличается
                                         params string[] exeptionFields)                                 //Поля, исключаемые из сравнения
        {
            var exFields = new SetS();

            foreach (var f in exeptionFields)
            {
                exFields.Add(f);
            }
            using (var rec1 = new DaoRec(db1, "SELECT * FROM " + tableName + " ORDER BY " + idField + (idField2 == null ? "" : ", " + idField2) + (idField3 == null ? "" : ", " + idField3)))
                using (var rec2 = new DaoRec(db2, "SELECT * FROM " + (tableName2 ?? tableName) + " ORDER BY " + idField + (idField2 == null ? "" : ", " + idField2) + (idField3 == null ? "" : ", " + idField3)))
                {
                    rec1.Read();
                    while (rec2.Read())
                    {
                        Assert.AreEqual(rec1.EOF, rec2.EOF);
                        foreach (var k in rec1.Fileds.Keys)
                        {
                            if (!exFields.Contains(k))
                            {
                                Assert.AreEqual(rec1.Recordset.Fields[k].Value, rec2.Recordset.Fields[k].Value);
                            }
                        }
                        rec1.Read();
                    }
                    Assert.AreEqual(rec1.EOF, rec2.EOF);
                }
            return(true);
        }
Esempio n. 10
0
        private void UpdateParams(DaoDb db)
        {
            AddEvent("Обновление таблиц CalcParams и Projects по ячейкам отчета");
            using (var rpr = new RecDao(db, "Projects"))
                while (rpr.Read())
                {
                    string pr = rpr.GetString("ProjectCode2");
                    if (pr.IsEmpty())
                    {
                        pr = rpr.GetString("Project");
                    }
                    Projects[pr].PropsToRecordset(rpr);
                }

            using (var rp = new RecDao(db, "CalcParams"))
                if (rp.HasRows())
                {
                    rp.MoveFirst();
                    while (!rp.EOF)
                    {
                        var proj  = Projects[rp.GetString("Project")];
                        var code  = rp.GetString("Code");
                        var param = proj.Params[code];
                        param.PropsToRecordset(rp);
                        rp.MoveNext();
                    }
                }
        }
Esempio n. 11
0
        //Добавление в таблицу поля с указанием типа данных
        public static void SetColumn(this DaoDb db, string tableName, string columnName, DataType dtype)
        {
            switch (dtype)
            {
            case DataType.String:
                db.SetColumnString(tableName, columnName);
                break;

            case DataType.Real:
                db.SetColumnDouble(tableName, columnName);
                break;

            case DataType.Integer:
                db.SetColumnLong(tableName, columnName);
                break;

            case DataType.Boolean:
                db.SetColumnBool(tableName, columnName);
                break;

            case DataType.Time:
                db.SetColumnDateTime(tableName, columnName);
                break;
            }
        }
Esempio n. 12
0
        //Загрузка сигналов
        private void LoadSignals()
        {
            AddEvent("Загрузка объектов");
            using (var db = new DaoDb(Dir + "UsedSignals.accdb"))
            {
                var objectsId = new DicI <CalcObject>();
                using (var rec = new DaoRec(db, "UsedObjects"))
                    while (rec.Read())
                    {
                        var ob = new CalcObject(rec);
                        Objects.Add(ob.Code, ob);
                        objectsId.Add(rec.GetInt("ObjectId"), ob);
                    }

                AddEvent("Загрузка свойств объектов");
                using (var rec = new DaoRec(db, "UsedObjectsProps"))
                    while (rec.Read())
                    {
                        var mean = MFactory.NewMean(rec.GetString("DataType").ToDataType(), rec.GetString("Mean"));
                        objectsId[rec.GetInt("ObjectId")].Props.Add(rec.GetString("CodeProp"), mean);
                    }

                AddEvent("Загрузка сигналов");
                using (var rec = new DaoRec(db, "UsedSignals"))
                    while (rec.Read())
                    {
                    }
            }
        }
Esempio n. 13
0
 //Генерация расчетных параметров для одного модуля
 public void GenerateParams(string moduleDir) //Каталог модуля
 {
     using (StartLog("Генерация параметров", moduleDir))
     {
         try
         {
             var dir       = moduleDir.EndDir();
             var table     = new GenTemplateTable("GenParams", "GenRule", "ErrMess", "CalcOn", "ParamId");
             var subTable  = new GenTemplateTable("GenSubParams", table, "GenRule", "ErrMess", "CalcOn", "SubParamId", "ParamId");
             var dataTabls = new TablsList();
             AddEvent("Загрузка структуры исходных таблиц", dir + "Tables.accdb");
             using (var db = new DaoDb(dir + "Tables.accdb"))
             {
                 dataTabls.AddDbStructs(db);
                 AddEvent("Загрузка значений из исходных таблиц");
                 dataTabls.LoadValues(db, true);
             }
             AddEvent("Загрузка и проверка генерирующих параметров");
             var generator = new ModuleGenerator(Logger, dataTabls, dir + "CalcParams.accdb", table, subTable);
             generator.Generate(dir + "Compiled.accdb", "GeneratedParams", "GeneratedSubParams");
             AddEvent("Генерация завершена", generator.GenErrorsCount + " ошибок");
             if (generator.GenErrorsCount != 0)
             {
                 SetLogResults(generator.GenErrorsCount + " ошибок");
                 AddCollectResult("Шаблон генерации содержит " + generator.GenErrorsCount + " ошибок");
             }
         }
         catch (Exception ex)
         {
             AddError("Ошибка при генерации параметров", ex);
         }
     }
 }
Esempio n. 14
0
 //Проверка соединения с файлом
 protected override void ConnectProvider()
 {
     if (!DaoDb.Check(DbFile, new[] { "NODES", "ABONENTS" }))
     {
         AddError("Недопустимая база данных системы Пролог");
     }
 }
Esempio n. 15
0
 public ResultSaver(string projectProvider, ThreadCalc thread)
 {
     _projectProvider = projectProvider;
     _db     = new DaoDb(thread.ResultFile);
     _rec    = new RecDao(_db, "DebugParams");
     _recv   = new RecDao(_db, "DebugParamsValues");
     _thread = thread;
 }
Esempio n. 16
0
 //Закрытие соединения
 protected override void DisconnectProvider()
 {
     if (Db != null)
     {
         Db.Dispose();
         Db = null;
     }
 }
Esempio n. 17
0
 //Создание таблицы
 public Tabl(string code, //код таблицы
             int level,   // уровень вложенности
             DaoDb db)    //База данных
 {
     Code = code;
     _db  = db;
     AddLevel(level);
 }
Esempio n. 18
0
 //Продготовка файла Result
 protected void PrepareResultFile()
 {
     ResultFile = General.ControllerDir + @"Result\Result" + Id + ".accdb";
     if (!DaoDb.FromTemplate(General.ControllerDir + "ResultTemplate.accdb", ResultFile, ApplicationType == ApplicationType.Controller ? ReplaceByTemplate.IfNewVersion : ReplaceByTemplate.Always))
     {
         DaoDb.Compress(ResultFile, 400000000, General.TmpDir, 3000);
     }
 }
Esempio n. 19
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));
        }
Esempio n. 20
0
 //Запись в клон списка описаний ошибок
 private void WriteMomentErrors(DaoDb cloneDb)
 {
     AddEvent("Запись описаний ошибок");
     using (var rec = new DaoRec(cloneDb, "MomentErrors"))
         foreach (var ed in Source.ErrPool.UsedErrorDescrs)
         {
             ed.ToRecordset(rec);
         }
 }
Esempio n. 21
0
 //Проверка соединения при ошибке
 public bool Check()
 {
     if (!DaoDb.Check(_db, new[] { "NODES", "ABONENTS" }))
     {
         Logger.AddError("Не найден или неправильный файл архива программы \"Пролог\"", null, "", Context);
         return(IsConnected = false);
     }
     return(IsConnected = true);
 }
Esempio n. 22
0
 //Сравнение фалов со сгенерированными параметрами
 public static void CompareGeneratedParams(string file1, string file2)
 {
     using (var db1 = new DaoDb(file1))
         using (var db2 = new DaoDb(file2))
         {
             CompareTables(db1, db2, "GeneratedParams", "ParamId");
             CompareTables(db1, db2, "GeneratedSubParams", "SubParamId");
         }
 }
Esempio n. 23
0
 //Проверка соединения при ошибке
 public bool Check()
 {
     if (!DaoDb.Check(CloneFile, new[] { "Objects", "Signals", "MomentsValues" }))
     {
         Logger.AddError("Не найден или неправильный" + _cloneFileType, null, "", Context);
         return(IsConnected = false);
     }
     return(IsConnected = true);
 }
Esempio n. 24
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);
            }
        }
Esempio n. 25
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\");
 }
Esempio n. 26
0
 //Загрузка таблиц
 private void LoadTables()
 {
     AddEvent("Загрузка данных исходных таблиц");
     using (var db = new DaoDb(_tablsFile))
     {
         db.ConnectDao();
         TablsList = new TablsList(db);
         TablsList.LoadValues();
     }
 }
Esempio n. 27
0
        public StateSaverAccess(string fileName)
        {
            //IEnumerable<string> tables = new[] { TableName };
            IEnumerable <string> tables = new[] { MainTableName, SubTableName };

            if (DaoDb.Check(fileName, tables))
            {
                _daoDb = new DaoDb(fileName);
            }
        }
Esempio n. 28
0
        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            bool stop = true;

            foreach (var t in App.Threads)
            {
                stop &= t.State != State.Calc && t.State != State.FinishCalc && t.State != State.Waiting && t.State != State.FinishWaiting && t.State != State.GetTime;
            }
            if (!stop)
            {
                Different.MessageInfo("Для закрытия контроллера расчетов нужно чтобы все потоки были остановлены");
                e.Cancel = true;
            }
            else
            {
                try { if (AppInfoWindow != null)
                      {
                          AppInfoWindow.Close();
                      }
                } catch {}
                foreach (var tt in App.Threads)
                {
                    try
                    {
                        var t = (ThreadController)tt;
                        if (t.HandInputWindow != null && t.HandInputWindow.IsVisible)
                        {
                            var vw = t.HandInputWindow.ValuesVindow;
                            if (vw != null && vw.Visibility == Visibility.Visible)
                            {
                                ((GridInputParam)vw.DataContext).SaveHandValues();
                                vw.Close();
                            }
                            t.HandInputWindow.ValuesVindow = null;
                            if (t.HandInputWindow.IsVisible)
                            {
                                t.HandInputWindow.Close();
                            }
                        }
                        if (t.SetupWindow != null && t.SetupWindow.IsVisible)
                        {
                            t.SetupWindow.Close();
                        }
                        if (t.ThreadWindow != null && t.ThreadWindow.IsVisible)
                        {
                            t.ThreadWindow.Close();
                        }
                        t.CloseThread();
                    }
                    catch {}
                }
                try { DaoDb.Compress(General.ControllerFile, 100000000, General.TmpDir); }
                catch { }
            }
        }
Esempio n. 29
0
        public void LoadValues()
        {
            var tdir = Different.GetTestInfoTaskDir() + @"CommonTypes\Tabls\LoadValues\";
            var tdb  = new DaoDb(tdir + "Project2GenData.accdb");
            {
                var tlist = new TablsList(tdb);
                tlist.LoadValues();

                var t      = tlist.Tabls["T1"];
                var rnums  = t.TablValues.SubNums;
                var rcodes = t.TablValues.SubCodes;
                Assert.IsTrue(rnums.ContainsKey(1));
                Assert.AreEqual("aa", rnums[1].Code);
                Assert.AreEqual("sssa", rnums[1]["stringfield"].String);
                Assert.AreEqual(10, rnums[1]["intfield"].Integer);
                Assert.AreEqual(2, rnums[1].SubCodes.Count);
                Assert.AreEqual(2, rnums[1].SubNums.Count);
                Assert.AreEqual("a1", rnums[1].SubNums[1].Code);
                Assert.AreEqual(2, rnums[1].SubCodes["a2"].Num);
                Assert.AreEqual("sa1", rnums[1].SubNums[1]["StringSub"].String);
                Assert.AreEqual("sa2", rnums[1].SubNums[2]["StringSub"].String);
                Assert.AreEqual("sa1", rnums[1].SubNums[1][0].String);
                Assert.AreEqual("sa2", rnums[1].SubNums[2][0].String);
                Assert.AreEqual(11, rnums[1].SubNums[1][1].Integer);
                Assert.AreEqual(12, rnums[1].SubNums[2][1].Integer);

                Assert.IsTrue(rcodes.ContainsKey("aa"));
                Assert.AreEqual(1, rcodes["aa"].Num);
                Assert.AreEqual("sssa", rcodes["aa"]["stringfield"].String);
                Assert.AreEqual("sa2", rcodes["aa"].SubNums[2]["StringSub"].String);

                Assert.IsTrue(rnums.ContainsKey(2));
                Assert.AreEqual("bb", rnums[2].Code);
                Assert.AreEqual("Sssb", rnums[2]["StringField"].String);
                Assert.AreEqual(20, rnums[2]["IntField"].Integer);
                Assert.AreEqual(1, rnums[2].SubCodes.Count);
                Assert.AreEqual(1, rnums[2].SubNums.Count);
                Assert.AreEqual("b1", rnums[2].SubNums[1].Code);
                Assert.AreEqual("sb1", rnums[2].SubNums[1]["StringSub"].String);

                Assert.IsTrue(rnums.ContainsKey(3));
                Assert.AreEqual("cc", rnums[3].Code);
                Assert.AreEqual("SSSC", rnums[3]["StringField"].String);
                Assert.AreEqual(30, rnums[3]["IntField"].Integer);
                Assert.AreEqual(3, rnums[3].SubCodes.Count);
                Assert.AreEqual(3, rnums[3].SubNums.Count);
                Assert.AreEqual("c2", rnums[3].SubNums[2].Code);
                Assert.AreEqual("sc3", rnums[3].SubNums[3]["StringSub"].String);
                Assert.AreEqual(33, rnums[3].SubNums[3]["IntSub"].Integer);

                t = tlist.Tabls["T2"];
                Assert.AreEqual(0, t.TablValues.SubNums.Count);
                Assert.AreEqual(0, t.TablValues.SubCodes.Count);
            }
        }
Esempio n. 30
0
        //Загрузка таблиц
        private TablsList Load(string prefix)
        {
            var tabls = new TablsList();

            using (var db = new DaoDb(TestLib.CopyFile("Generator", "GenData.accdb", "Check" + prefix + ".accdb")))
            {
                tabls.AddStruct(db, "Tabl", "SubTabl", "SubSubTabl");
                tabls.AddDbStructs(db);
            }
            return(tabls);
        }