/// <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); }
/// <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); }