예제 #1
0
        /// <summary>
        /// Создать таблицы парсера.
        /// Всего есть три таблицы модели данных:
        /// fbaEntity - все сущности.
        /// fbaAttribute - все атрибуты всех сущностей.
        /// fbaEntity - все таблицы всех сущностей.
        /// Но для работы парсера не очень удобно использовать эти три таблицы. Было бы удобнее, если бы вся информация была собрана в одной, или двух таблицах.
        /// В этом случае снижается сложность парсера и увеличивается скорость работы. Поэтому процедура ниже берёт эти три таблицы и на основе них создает две других таблицы,
        /// которые были бы удобнее для парсера. Парсер работает на этих таблицах. Это таблицы: fbaAttrParent, fbaEntityParser.
        /// В таблице fbaAttrParent есть вся информация по атрибутам и по таблицам с учетом вложенности сущностей в друг друга.
        /// Количество строк больше чем в fbaAttribute.
        /// Таблица fbaEntityParser - это по сути та-же самая fbaEntity, но добавлены столбца в которых проставлено имя главной таблицы парсера и другая информация по главной таблице. Количество строк такое-же как и в fbaEntity.
        /// </summary>
        /// <returns>Если успешно, то true</returns>
        public static bool CreateParserLocalTables()
        {
            string sql       = "";
            int    lineCount = 0;
            string fileName  = "";

            if (Var.con.serverTypeRemote == ServerType.MSSQL)
            {
                fileName = "ParserPrepareMSSQL.txt";
            }
            if (Var.con.serverTypeRemote == ServerType.SQLite)
            {
                fileName = "ParserPrepareSQLite.txt";
            }
            if (fileName == "")
            {
                sys.SM("Тип сервера " + Var.con.serverTypeRemote.ToString() + " не поддерживается!", MessageType.Error);
                return(false);
            }
            if (!FBAFile.FileReadText(FBAPath.PathSettings + fileName, true, out sql, out lineCount))
            {
                return(false);
            }
            var DS = new System.Data.DataSet();

            if (!sys.SelectDS(DirectionQuery.Remote, sql, out DS))
            {
                return(false);
            }
            sys.SM("Таблицы для парсера MSQL созданы!", MessageType.Information);
            return(true);
        }
예제 #2
0
파일: FormSM.cs 프로젝트: ewgeny911/FBA
        /// <summary>
        /// Добавление новой вкладки для редактора запросов.
        /// </summary>
        /// <param name="indexError"></param>
        public void TabControlPageAdd(int indexError)
        {
            string fileName  = Errors[indexError, 1];
            int    indexPage = GetTabIndexByTagValue(fileName);

            if (indexPage > 0)
            {
                return;
            }

            string Code;
            int    LinesCount;
            string FileNameFull = Errors[indexError, 4];

            if (FileNameFull == null)
            {
                return;
            }
            if (!FBAFile.FileReadText(FileNameFull, true, out Code, out LinesCount))
            {
                return;
            }
            tabControl1.TabPages.Add(fileName);
            indexPage = tabControl1.TabPages.Count - 1;
            System.Windows.Forms.TabPage tb = tabControl1.TabPages[indexPage];
            tb.Tag = fileName;
            var fctb1 = new FastColoredTextBox();

            tb.Controls.Add(fctb1);
            fctb1.Text = Code;
            fctb1.Dock = TextBoxCode.Dock;
            fctb1.AutoCompleteBrackets      = TextBoxCode.AutoCompleteBrackets;
            fctb1.AutoScrollMinSize         = TextBoxCode.AutoScrollMinSize;
            fctb1.BookmarkColor             = TextBoxCode.BookmarkColor;
            fctb1.BracketsHighlightStrategy = TextBoxCode.BracketsHighlightStrategy;
            fctb1.Cursor        = TextBoxCode.Cursor;
            fctb1.DisabledColor = TextBoxCode.DisabledColor;
            fctb1.FindEndOfFoldingBlockStrategy = TextBoxCode.FindEndOfFoldingBlockStrategy;
            fctb1.Font         = TextBoxCode.Font;
            fctb1.Language     = TextBoxCode.Language;
            fctb1.LeftBracket  = TextBoxCode.LeftBracket;
            fctb1.RightBracket = TextBoxCode.RightBracket;
            //fctb1.Padding                       = TextBoxCode.Padding;
            fctb1.SelectionColor   = Color.Red;             //TextBoxCode.SelectionColor;
            fctb1.VirtualSpace     = TextBoxCode.VirtualSpace;
            fctb1.Name             = "textCode" + indexPage;
            fctb1.BackColor        = TextBoxCode.BackColor;
            fctb1.CurrentLineColor = TextBoxCode.CurrentLineColor;
            fctb1.VirtualSpace     = TextBoxCode.VirtualSpace;
            fctb1.BorderStyle      = TextBoxCode.BorderStyle;
            fctb1.ReadOnly         = true;

            int firstbookmark = 0;
            int countError    = 0;

            for (int i = 0; i < countPage; i++)
            {
                if (Errors[i, 1] != fileName)
                {
                    continue;
                }
                countError++;
                int N = Errors[i, 2].ToInt(false);
                if (firstbookmark == 0)
                {
                    firstbookmark = N;
                }
                fctb1.BookmarkLine(N - 1);
                fctb1.Navigate(N - 1);
                fctb1.CurrentLineColor = Color.Red;
                tb.Text = fileName + " (" + countError + ")";
            }
            SetCurrentBookmarkForFileName(fileName, firstbookmark);
            fctb1.Navigate(firstbookmark);
        }