Пример #1
0
        ///Добавить все изображения из папки.
        private void DirAdd()
        {
            const string initialPath = @"C:\";
            string       dirName     = "";

            if (!FBAFile.DirChoose(initialPath, out dirName))
            {
                return;
            }
            const bool subDirectories = false; //Вложенные подпапки не проверяем.

            string[]     files       = FBAFile.FileFind(dirName, "*.*", subDirectories);
            const string imageFormat = ";.BMP;.JPG;.GIF;.PNG;";
            var          progress1   = new FormProgress("Загрузка", "Загрузка изображений в базу данных", files.Count());

            progress1.Show();
            for (int i = 0; i < files.Count(); i++)
            {
                string fileNameFull = files[i];
                string format       = Path.GetExtension(fileNameFull).ToUpper();
                if (imageFormat.IndexOf(format, StringComparison.OrdinalIgnoreCase) < 0)
                {
                    continue;
                }
                if (!ImageAdd(fileNameFull))
                {
                    return;
                }
                progress1.Inc();
                //Thread.Sleep(1000);
            }
            progress1.Dispose();
            ImageRefresh();
            sys.SM("Bсе изображения успешно загружены в базу данных!", MessageType.Information);
        }
Пример #2
0
 ///Загрузить текст MSSQL запроса.
 private void FormParserLoad(object sender, EventArgs e)
 {
     FBAFile.FileReadTextObject(textQuery, FBAPath.PathSettings + "MSSQL.txt");
     RefreshFiles();
     sys.ConnectLocal();
     progressBarParser.Value = 0;
 }
Пример #3
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);
        }
Пример #4
0
        /// <summary>
        /// Сохранить все файлы программы на сервере.
        /// </summary>
        /// <param name="uploadToServer"></param>
        /// <returns></returns>
        private bool UpdateUpload(bool uploadToServer)
        {
            bool doUserUpdate = false;

            if (uploadToServer)
            {
                if (!(sys.SM("Сохранить файлы программы на сервере для обновления?", MessageType.Question, "Загрузка обновления на сервер")))
                {
                    return(false);
                }
                doUserUpdate = sys.SM("Это обновление для пользователей?", MessageType.Question, "Загрузка обновления на сервер");
            }

            string[] ContentList = FBAFile.FilesInFolder(FBAPath.PathDebug, "*.*", "", "", true, true, true);;

            System.Data.DataTable DT;
            bool Result = UpdateUploadFiles(out DT, ContentList, doUserUpdate, uploadToServer);

            //dgvUpdate.SetDataSource(DT);



            if (uploadToServer)
            {
                sys.SM("Файлы программы загружены на сервер. Версия " + Var.ApplicationVersion, MessageType.Information, "Загрузка на сервер");
            }
            return(Result);
        }
Пример #5
0
 //Обновить список MSQL запросов.
 private void RefreshFiles()
 {
     ListBox1.Items.Clear();
     FBAFile.ListBoxLoadFiles(ListBox1, FBAPath.PathSettings, "*.*", "", "Result;SQL", false, false, false);
     if (ListBox1.Items.Count > 0)
     {
         ListBox1.SelectedIndex = 0;
     }
 }
Пример #6
0
        /// <summary>
        /// Запуск EXE файла, который копирует файлы обновления, после того как они были загружены с сервера.
        /// После скачивания обновления текущей программой (это может быть ClientApp, Utility)
        /// запускается эта процедура, которая запускает обновляльщик (Update.exe) и завершает текущую программу.
        /// Обновляльщик ждет некоторое время, если запущены какие либо exe файлы,
        /// то пытается остановить их работу и если все успешно, то копирует файлы обновления
        /// </summary>
        /// <returns>Если успешно, то true</returns>
        public static bool UpdateRun()
        {
            var     fileName = FBAPath.PathMain + "Updater.exe";
            Process run;

            if (!FBAFile.FileRunEXE(out run, fileName, Var.SystemName))
            {
                return(false);
            }
            Environment.Exit(0);
            return(true);
        }
Пример #7
0
        /// <summary>
        /// Выбрать файл
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbFileName_EditClick(object sender, EventArgs e)
        {                                                                                        //"CSV Files|*.csv|All Files|*.*"
            const string title        = "Выбор шаблона отчета";
            const string filter       = "Office Files|*.XLS;*.XLSX;*.DOC;*.DOCX)|All files|*.*"; //формат загружаемого файла;
            string       fileNameFull = "";

            if (!FBAFile.OpenFileName(title, filter, "", ref fileNameFull))
            {
                return;
            }
            tbFileName.Text = fileNameFull;
            tbFormat.Text   = Path.GetExtension(fileNameFull).ToUpper();
        }
Пример #8
0
        /// <summary>
        /// Загрузка файла.
        /// </summary>
        /// <returns>Возвращает успешность или нет загрузки файла.</returns>
        private bool ImportFile()
        {
            //Выбор файла загрузки.
            string fileName = tbFileName.Text;

            if (!FBAFile.OpenFileName("Выбор файла для загрузки", "CSV Files|*.csv|Excel Files|*.xlsx|All Files|*.*", "", ref fileName))
            {
                return(false);
            }
            tbFileName.Text = fileName;
            //Загрузка возможно из двух типов файлов xlsx и csv.
            string EXT = System.IO.Path.GetExtension(fileName).ToUpper();

            if (EXT == ".XLSX")
            {
                fileType = "Excel";
            }
            else if (EXT == ".CSV")
            {
                fileType = "CSV";
            }
            else
            {
                sys.SM("Импорт из этого типа файла не поддерживается!");
                return(false);
            }

            //Начать асинхронное добавление строк
            if (sys.IsEmpty(fileName))
            {
                return(false);
            }

            //HACK - для того чтобы не было ошибки вызова обновления прогресс бара. т.к. компанент создан не в том потоке.
            System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;

            if (fileType == "CSV")
            {
                LoadCSV(fileName);
            }
            if (fileType == "Excel")
            {
                LoadXLSX(fileName);
            }

            return(true);
        }
Пример #9
0
        ///Добавить одно изображение.
        private void ImageAdd()
        {
            const string title            = "Выбор изображения";
            const string filter           = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*"; //формат загружаемого файла;
            string       fileNameFull     = "";
            const string initialDirectory = "";

            if (!FBAFile.OpenFileName(title, filter, initialDirectory, ref fileNameFull))
            {
                return;
            }
            if (!ImageAdd(fileNameFull))
            {
                return;
            }
            ImageRefresh();
            sys.SM("Изображение успешно загружено!", MessageType.Information);
        }
Пример #10
0
 /// <summary>
 /// Проверка наличия путей. При запуске клиента.
 /// </summary>
 /// <returns></returns>
 public static bool CheckPath()
 {
     if (!FBAFile.DirExists(FBAPath.PathApp, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathAdditional, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathLog, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathTemp, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathUpdate, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathRollback, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathSettings, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathSQL, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathForms, true))
     {
         return(false);
     }
     if (!FBAFile.DirExists(FBAPath.PathTemplate, true))
     {
         return(false);
     }
     return(true);
 }
Пример #11
0
        ///Загрузка файла с запросом.
        private void LoadFileSQL(string TestName)
        {
            if (TestName == "")
            {
                return;
            }
            string FileName = TestName + ".txt";

            if (!FBAFile.FileReadTextObject(ListSQL, FBAPath.PathSettings + FileName))
            {
                ListSQL.Text = "";
            }

            FileName = TestName + "_Result.txt";
            if (!FBAFile.FileReadTextObject(ListResult, FBAPath.PathSettings + FileName))
            {
                ListResult.Text = "";
            }
        }
Пример #12
0
        ///Загрузить картинку в БД.
        private bool ImageAdd(string FileNameFull)
        {
            string     FileData    = "";
            string     ErrorMes    = "";
            string     ImageWidth  = "";
            string     ImageHeight = "";
            const bool ShowMes     = true;

            if (!FBAFile.FileReadToBase64(FileNameFull, out FileData, out ErrorMes, ShowMes))
            {
                return(false);
            }
            string ImageName     = Path.GetFileNameWithoutExtension(FileNameFull);
            string ImageFileName = Path.GetFileName(FileNameFull);
            string Format        = Path.GetExtension(ImageFileName).ToUpper();

            try
            {
                var pictureBoxTemp = new FBA.PictureBoxFBA();
                pictureBoxTemp.PictureBoxLoadFile(FileNameFull);
                ImageWidth  = pictureBoxTemp.Image.Width.ToString();
                ImageHeight = pictureBoxTemp.Image.Height.ToString();
            } catch (Exception ex)
            {
                sys.SM("Ошибка при открытии изображения: " + FileNameFull + Var.CR + ex.Message);
                return(false);
            }

            string sql = "INSERT INTO fbaImage (" +
                         "UserCreateID, DateCreate, Name, " +
                         "FileName, FileNameFull, Image, " +
                         "Width, Height, Format) " +
                         "VALUES (" + Var.UserID + ", " + sys.DateTimeCurrent() + ",'" + ImageName + "'," +
                         "'" + ImageFileName + "','" + FileNameFull + "','" + FileData + "'," +
                         "'" + ImageWidth + "','" + ImageHeight + "','" + Format + "')";

            if (!sys.Exec(DirectionQuery.Remote, sql))
            {
                return(false);
            }
            return(true);
        }
Пример #13
0
        /// <summary>
        /// Сохранить изображение
        /// </summary>
        private void ImageSave()
        {
            if (pictureBox1.Image == null)
            {
                return;
            }
            string fileName = "error.jpeg";

            if (!FBAFile.SaveFileName("Сохранение изображения", "jpeg Files|*.jpeg;*.jpg|All Files (*.*)|*.*", "", 0, ref fileName))
            {
                return;
            }
            try
            {
                pictureBox1.Image.Save(fileName);
            } catch (Exception ex)
            {
                sys.SM("Ошибка сохранения изображения в файл: " + fileName + Var.CR + ex.Message);
            }
        }
Пример #14
0
        /*
         *   //Показать путь к файлу в темповой папке.
         *  if (SenderName == "btnReportPath")
         *  {
         *      if (tbFileNameFull.Text == "") return;
         *      try
         *      {
         *          string FileNamePath = Path.GetDirectoryName(tbFileNameFull.Text);
         *          System.Diagnostics.Process.Start(FileNamePath);
         *      }
         *      catch { }
         *  }*/


        ///Показ шаблона отчета.
        private void SelectReport()
        {
            string ReportID = dgvReport.Value("ID");

            if (ReportID == "")
            {
                return;
            }
            string FileName;
            string FileData;
            string sql = "SELECT FileName, FileData FROM fbaReport WHERE ID = " + ReportID;

            if (!sys.GetValue(DirectionQuery.Remote, sql,
                              out FileName,
                              out FileData
                              ))
            {
                return;
            }
            if (FileData == "")
            {
                sys.SM("Не найден шаблон отчета!");
                return;
            }
            string ErrorMes;
            string FileNameTemp = FBAPath.PathTemp + FileName;


            if (!FBAFile.FileWriteFromBase64(FileData, FileNameTemp, out ErrorMes, true))
            {
                return;
            }
            if (!File.Exists(FileNameTemp))
            {
                sys.SM("Не найден шаблон отчета на диске. Имя файла: " + FileNameTemp);
                return;
            }

            FBAFile.FileRunSimple(FileNameTemp, "");
        }
Пример #15
0
        /// <summary>
        /// Загрузить шаблон отчета в БД.
        /// </summary>
        /// <returns></returns>
        private bool ReportInsert()
        {
            string     fileData           = "";
            string     errorMes           = "";
            string     reportFileNameFull = tbFileName.Text;
            const bool showMes            = true;

            if (reportFileNameFull != "")
            {
                if (!FBAFile.FileReadToBase64(reportFileNameFull, out fileData, out errorMes, showMes))
                {
                    return(false);
                }
            }
            string reportName     = tbName.Text;
            string reportBrief    = tbBrief.Text;
            string reportFileName = Path.GetFileName(reportFileNameFull);
            string format         = tbFormat.Text;
            string comment        = tbComment.Text;
            string reportType     = GetReportType(format);

            string SQL = "INSERT INTO fbaReport (" +
                         "EntityID, DateCreate, UserCreateID, " +
                         "Format, Brief, Name, " +
                         "FileName, FileNameFull, FileData, " +
                         "Comment, ReportType)" +
                         "VALUES (" +
                         "113," + sys.DateTimeCurrent() + "," + Var.UserID + "," +
                         "'" + format + "','" + reportBrief + "','" + reportName + "'," +
                         "'," + reportFileName + "','" + reportFileNameFull + "','" + fileData + "'," +
                         "'," + comment + "','" + reportType + "')";

            if (!sys.Exec(DirectionQuery.Remote, SQL))
            {
                return(false);
            }
            return(true);
        }
Пример #16
0
        /// <summary>
        /// Загрузить шаблон отчета в БД.
        /// </summary>
        /// <returns>Если успешно, то true</returns>
        private bool ReportUpdate()
        {
            string     fileData           = "";
            string     errorMes           = "";
            string     reportFileNameFull = tbFileName.Text;
            const bool showMes            = true;

            if (!FBAFile.FileReadToBase64(reportFileNameFull, out fileData, out errorMes, showMes))
            {
                return(false);
            }
            string reportName     = tbName.Text;
            string reportBrief    = tbBrief.Text;
            string reportFileName = Path.GetFileName(reportFileNameFull);
            string format         = tbFormat.Text;
            string comment        = tbComment.Text;
            string reportType     = GetReportType(format);
            string sql            = "UPDATE fbaReport " +
                                    "SET " +
                                    "DateChange    = " + sys.DateTimeCurrent() +
                                    ",UserChangeID = " + Var.UserID +
                                    ",Format       = '" + format + "'" +
                                    ",Brief        = '" + reportBrief + "'" +
                                    ",Name         = '" + reportName + "'" +
                                    ",FileName     = '" + reportFileName + "'" +
                                    ",FileNameFull = '" + reportFileNameFull + "'" +
                                    ",FileData     = '" + fileData + "'" +
                                    ",Comment      = '" + comment + "'" +
                                    ",ReportType   = '" + reportType + "'" +
                                    " WHERE ID = " + ID;

            if (!sys.Exec(DirectionQuery.Remote, sql))
            {
                return(false);
            }
            return(true);
        }
Пример #17
0
        /// <summary>
        /// Послать ошибку на сервер.
        /// </summary>
        /// <param name="errorMes">Текст ошибки</param>
        /// <param name="additionalInfo">Дополнительная информация</param>
        public static bool SendErrorToServer(string errorMes, string additionalInfo)
        {
            //Выходим, если делать ничего не нужно.
            if (!SaveError)
            {
                return(false);
            }

            //Это для того чтобы если во время работы этого кода возникнет ошибка, не было зацикливания.
            SaveError = false;

            try
            {
                //Если чтение параметра неудачное, то ничего не делаем.
                var Params = new string[10];

                //Получаем только при первой ошибке.
                if (ErrorsCount == 0)
                {
                    if (Param.Load(DirectionQuery.Remote, Var.UserID, "SaveError", true, "User", out Params))
                    {
                        if (!Params[0].Replace("SaveError=", "").ToBool())
                        {
                            return(false);
                        }
                        SaveScreenshot      = Params[1].Replace("SaveScreenshot=", "").ToBool();
                        CompressRatio       = Params[2].Replace("CompressRatio=", "").ToInt();
                        SecBetweenSendError = Params[3].Replace("SecBetweenSendError=", "").ToInt();
                    }
                }

                //sys.Error.SaveError true/false: Сохранять ошибку на сервере или нет. Пример: SaveError=true
                //sys.Error.SaveScreenshot true/false: Сохранять текст ошибки на сервере или нет. Пример: SaveScreenshot=true
                //sys.Error.CompressRatio int:  находится значение степени сжатия скриншота. По умолчанию формат JPEG, степень сжатия 90. Пример: CompressRatio=90
                //sys.Error.SecBetweenSendError int: - количество секунд между ошибками.
                //sys.Error.LastDateTimeSendError datetime: Время последней ошибки.

                if (sys.GetSecDiff(LastDateTimeSendError, DateTime.Now) < SecBetweenSendError)
                {
                    SaveError = true;
                    return(false);
                }

                string imagebase64      = "";
                string screenshoFormat  = "";
                string screenshotWidth  = "";
                string screenshotHeight = "";
                string screenshotSize   = "";

                if (SaveScreenshot)
                {
                    //Получение скриншота
                    screenshoFormat  = "WEBP";
                    screenshotWidth  = Screen.PrimaryScreen.Bounds.Width.ToString();
                    screenshotHeight = Screen.PrimaryScreen.Bounds.Height.ToString();
                    Bitmap   printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
                    Graphics graphics    = Graphics.FromImage(printscreen as Image);
                    graphics.CopyFromScreen(0, 0, 0, 0, printscreen.Size);
                    byte[] webpImageData;
                    WebP.EncodeLossly(printscreen, CompressRatio, out webpImageData);
                    imagebase64    = Convert.ToBase64String(webpImageData);
                    screenshotSize = FBAFile.GetFileSizeStr(webpImageData.Length, true, false);
                }
                additionalInfo  = sys.AddRightCR(additionalInfo);
                additionalInfo += GetSystemInfo();
                string sql = "INSERT INTO fbaError (EntityID, UserID, ErrorTime, ErrorText, ScreenshotFormat, ScreenshotWidth, ScreenshotHeight, ScreenshotSize, " +
                             "CompressRatio, AdditionalInfo, ScreenshotData) VALUES (" + Var.CR +
                             "123, " + Var.UserID + "," + sys.DateTimeCurrent() + ",'" + errorMes + "','" + screenshoFormat + "','" + screenshotWidth + "','" + screenshotHeight + "'," + screenshotSize + ",'" + Error.CompressRatio.ToString() + "','" + additionalInfo + "','" + imagebase64 + "')";

                sys.Exec(DirectionQuery.Remote, sql);
                LastDateTimeSendError = DateTime.Now;
            }
            catch
            {
                //Ошибку не выдаем.
            }

            SaveError = true;
            return(true);
        }
Пример #18
0
        ///Сохранить текст сообщения от клиента в файл. Сейчас не используется.
        public static string GetRequestFile(Encoding enc, string boundary, Stream input, string FileName)
        {
            Byte[] boundaryBytes = enc.GetBytes(boundary);
            Int32  boundaryLen   = boundaryBytes.Length;
            string TempPath;

            if (!FBAFile.GetPathTemp(out TempPath))
            {
                return("error creating temporary directory: " + TempPath);
            }
            string FullFileName = TempPath + FileName;

            using (var output = new FileStream(FullFileName, FileMode.Create, FileAccess.Write))
            {
                var   buffer   = new Byte[1024];
                Int32 len      = input.Read(buffer, 0, 1024);
                Int32 startPos = -1;

                //Find start boundary
                while (true)
                {
                    if (len == 0)
                    {
                        return("Start Boundaray Not Found");
                    }

                    startPos = IndexOf(buffer, len, boundaryBytes);
                    if (startPos >= 0)
                    {
                        break;
                    }
                    else
                    {
                        Array.Copy(buffer, len - boundaryLen, buffer, 0, boundaryLen);
                        len = input.Read(buffer, boundaryLen, 1024 - boundaryLen);
                    }
                }

                //Skip four lines (Boundary, Content-Disposition, Content-Type, and a blank)
                for (Int32 i = 0; i < 4; i++)
                {
                    while (true)
                    {
                        if (len == 0)
                        {
                            return("Preamble not Found.");
                        }

                        startPos = Array.IndexOf(buffer, enc.GetBytes("\n")[0], startPos);
                        if (startPos >= 0)
                        {
                            startPos++;
                            break;
                        }
                        else
                        {
                            len = input.Read(buffer, 0, 1024);
                        }
                    }
                }

                Array.Copy(buffer, startPos, buffer, 0, len - startPos);
                len = len - startPos;

                while (true)
                {
                    Int32 endPos = IndexOf(buffer, len, boundaryBytes);
                    if (endPos >= 0)
                    {
                        if (endPos > 0)
                        {
                            output.Write(buffer, 0, endPos - 2);
                        }
                        break;
                    }
                    else if (len <= boundaryLen)
                    {
                        return("End Boundaray Not Found");
                    }
                    else
                    {
                        output.Write(buffer, 0, len - boundaryLen);
                        Array.Copy(buffer, len - boundaryLen, buffer, 0, boundaryLen);
                        len = input.Read(buffer, boundaryLen, 1024 - boundaryLen) + boundaryLen;
                    }
                }
            }
            return("Success");
        }
Пример #19
0
 /// <summary>
 /// Событие. Удаление файлов кэша.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void BtnDeleteDLLClick(object sender, EventArgs e)
 {
     string[] listNotDeleted;
     FBAFile.DirClean(FBAPath.PathApp, out listNotDeleted, true);
 }
Пример #20
0
        ///Список SQL запросов.
        private void BtnSQL1Click(object sender, EventArgs e)
        {
            //Добавить.
            if (sender == btnSQL1)
            {
                string FileName = "";
                if (!sys.InputValue("Название запроса", "Введите название запроса:", SizeMode.Small, ValueType.String, ref FileName))
                {
                    return;
                }
                ListBox1.Items.Add(FileName);
                ListSQL.Text           = "";
                ListBox1.SelectedIndex = ListBox1.Items.Count - 1;
            }

            //Удалить.
            if (sender == btnSQL2)
            {
                string FileName = ListBox1.Items[ListBox1.SelectedIndex].ToString();
                string ErrorMes = "";
                if (!FBAFile.FileDelete(FBAPath.PathSettings + FileName + ".txt", out ErrorMes, true))
                {
                    return;
                }
                FBAFile.FileDelete(FBAPath.PathSettings + FileName + "_Result.txt", out ErrorMes, true);
                ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
            }

            //Сохранить.
            if (sender == btnSQL3)
            {
                if (ListBox1.SelectedIndex == -1)
                {
                    sys.SM("Выберите запрос!");
                    return;
                }
                string FileName = ListBox1.Items[ListBox1.SelectedIndex].ToString();
                FBAFile.FileWriteTextObject(ListSQL, FBAPath.PathSettings + FileName + ".txt", false);
                FBAFile.FileWriteTextObject(ListResult, FBAPath.PathSettings + FileName + "_Result.txt", false);
            }

            //Использовать.
            if (sender == btnSQL4)
            {
                textQuery.Text            = ListSQL.Text;
                tabControl1.SelectedIndex = 1;
            }

            //Тест только парсинг.
            if (sender == btnSQL5)
            {
                RunTest(false, "Test");
            }

            //Тест парсинг и выполнение.
            if (sender == btnSQL6)
            {
                RunTest(true, "Test");
            }

            //Тест парсинг и выполнение.
            if (sender == btnSQL9)
            {
                RunTest(true, "WORK");
            }

            //Переименование.
            if (sender == btnSQL7)
            {
                string     fileName    = ListBox1.Items[ListBox1.SelectedIndex].ToString();
                string     fileSource1 = FBAPath.PathSettings + fileName + ".txt";
                string     fileSource2 = FBAPath.PathSettings + fileName + "_Result.txt";
                const bool showMes     = true;
                string     errorMes    = "";
                if (!sys.InputValue("Новое название запроса", "Введите новое название запроса:", SizeMode.Small, ValueType.String, ref fileName))
                {
                    return;
                }
                string fileDestination1 = FBAPath.PathSettings + fileName + ".txt";
                string fileDestination2 = FBAPath.PathSettings + fileName + "_Result.txt";
                //Переименование файла. FileExists = (Overwrite, Skip, Ask)
                if (File.Exists(fileSource1))
                {
                    if (!FBAFile.FileRename(fileSource1, fileDestination1, FileOverwrite.Ask, showMes, out errorMes))
                    {
                        return;
                    }
                }
                if (File.Exists(fileSource2))
                {
                    if (!FBAFile.FileRename(fileSource2, fileDestination2, FileOverwrite.Ask, showMes, out errorMes))
                    {
                        return;
                    }
                }
                sys.SM("Запрос переименован!", MessageType.Information);
            }

            //Кнопка "Обновить список MSQL запросов".
            if (sender == btnSQL8)
            {
                RefreshFiles();
            }
        }
Пример #21
0
 ///Загрузить все.
 private void LoadAll()
 {
     FBAFile.FileReadTextObject(tbTextSQLite, FBAPath.PathAdditional + "NewDatabase_SQLite.sql");
     FBAFile.FileReadTextObject(tbTextPostgre, FBAPath.PathAdditional + "NewDatabase_Postgre.sql");
     FBAFile.FileReadTextObject(tbTextMSSQL, FBAPath.PathAdditional + "NewDatabase_MSSQL.sql");
 }
Пример #22
0
        ///Показ изображения.
        private void SelectImage()
        {
            string ImageID = dgvImage.Value("ID");

            if (ImageID == "")
            {
                return;
            }
            string FileData;
            string ImageName;
            string FileName;
            string FileNameFull;
            string Format;
            string ImageWidth;
            string ImageHeight;
            string SQL = "SELECT Image, Name, FileName, FileNameFull, " +
                         "Format, Width, Height " +
                         "FROM fbaImage WHERE ID = " + ImageID;

            if (!sys.GetValue(DirectionQuery.Remote, SQL,
                              out FileData,
                              out ImageName,
                              out FileName,
                              out FileNameFull,
                              out Format,
                              out ImageWidth,
                              out ImageHeight))
            {
                return;
            }
            if (FileData == "")
            {
                sys.SM("Не найдено изображение в таблице изображений!");
                return;
            }
            string ErrorMes;
            string FileNameTemp = FBAPath.PathTemp + FileName;


            if (!FBAFile.FileWriteFromBase64(FileData, FileNameTemp, out ErrorMes, true))
            {
                return;
            }
            if (!File.Exists(FileNameTemp))
            {
                sys.SM("Не найдено изображение на диске. Имя файла: " + FileNameTemp);
                return;
            }
            tbID.Text           = ImageID;
            tbSize.Text         = ImageWidth + "x" + ImageHeight;
            tbFormat.Text       = Format;
            tbFileName.Text     = FileName;
            tbFileNameFull.Text = FileNameFull;

            try
            {
                pictureBox1.PictureBoxLoadFile(FileNameTemp);
                ShowImage();
            } catch (Exception ex)
            {
                sys.SM("Ошибка при открытии изображения: " + FileNameTemp + Var.CR + ex.Message);
                return;
            }
        }
Пример #23
0
        /// <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);
        }
Пример #24
0
 ///Сохранить текст MSSQL запроса.
 private void SaveMSQLText()
 {
     FBAFile.FileWriteTextObject(textQuery, FBAPath.PathSettings + "MSSQL.txt", false);
 }
Пример #25
0
        /// <summary>
        /// Получить список файлов решения
        /// </summary>
        /// <returns></returns>
        private bool GetFilesFBA()
        {
            //Последняя версия в таблице обновлений.
            int numberUpdate = GetLastUpdate() + 1; //Новая версия.

            if (dt.Columns.Count == 0)
            {
                dt.Columns.Add("NumberFile");         //Порядковый номер файла или папки в обновлении
                dt.Columns.Add("NumberUpdate");       //Порядковый номер обновления.
                dt.Columns.Add("Version");            //Версия программы вида 1.0.6335.33362
                dt.Columns.Add("FullName");           //Полное имя файла с путем.
                dt.Columns.Add("Path");               //Начальный каталог программы, т.е. sys.PathMain
                dt.Columns.Add("Name");               //Имя файла/папки
                dt.Columns.Add("Extension");          //Расширение файла (для папки здесь пусто)
                dt.Columns.Add("CreationTime");       //Дата создания папки/файла
                dt.Columns.Add("LastWriteTime");
                dt.Columns.Add("LastAccessTime");
                dt.Columns.Add("Size");               //размер файла в байтах. Для папки здесь 0.
                dt.Columns.Add("MD5");                //Хеш MD5
            }
            dt.Rows.Clear();
            string[] contentList = FBAFile.FilesInFolder(FBAPath.PathDebug, "*.*", "", "", true, true, true);;

            //Для вставки полей в DT.
            string numberFile     = "";
            string dateRecord     = sys.DateTimeToSQLStr(DateTime.Now);
            string version        = Var.ApplicationVersion;
            string fullName       = "";
            string filePath       = "";
            string fileName       = "";
            string extension      = "";
            string creationTime   = "";
            string lastWriteTime  = "";
            string lastAccessTime = "";
            long   SizeFile;
            string hashMD5;

            var progress1 = new FormProgress("Обновление", "Получение свойств файлов", contentList.Length);

            progress1.Show();

            var fileprop = new string[dt.Columns.Count];

            for (int i = 0; i < contentList.Length; i++)
            {
                try
                {
                    fullName = contentList[i];
                    if (string.IsNullOrEmpty(fullName))
                    {
                        continue;
                    }
                    if (!File.Exists(fullName))
                    {
                        continue;
                    }
                    var file = new FileInfo(fullName);
                    filePath       = file.DirectoryName;
                    fileName       = file.Name;
                    numberFile     = (i + 1).ToString();
                    extension      = file.Extension;
                    creationTime   = sys.DateTimeToSQLStr(file.CreationTime);
                    lastWriteTime  = sys.DateTimeToSQLStr(file.LastWriteTime);
                    lastAccessTime = sys.DateTimeToSQLStr(file.LastAccessTime);
                    SizeFile       = file.Length;
                    hashMD5        = Crypto.FileHashMD5Calc(fullName);

                    fileprop[0]  = numberFile;
                    fileprop[1]  = numberUpdate.ToString();
                    fileprop[2]  = version;
                    fileprop[3]  = fullName;
                    fileprop[4]  = filePath;;
                    fileprop[5]  = fileName;
                    fileprop[6]  = extension;
                    fileprop[7]  = creationTime;
                    fileprop[8]  = lastWriteTime;
                    fileprop[9]  = lastAccessTime;
                    fileprop[10] = SizeFile.ToString();
                    fileprop[11] = hashMD5;

                    DataRow row = dt.NewRow();
                    row.ItemArray = fileprop;
                    dt.Rows.Add(row);
                    progress1.Inc();
                } catch (Exception ex)
                {
                    sys.SM("File Number " + numberFile + Var.CR + "File name: " + fullName + Var.CR + ex.Message);
                    continue;
                }
            }
            const bool ff = true;
            Type       tp = ff.GetType();

            dt.Columns.Add("Check", tp);      //Выбрать файл для заливки
            dt.Columns["Check"].SetOrdinal(0);

            CheckFiles(false);
            //dt.Columns[0].DataType = tp;
            progress1.Close();
            return(true);
        }
Пример #26
0
        /// <summary>
        /// Загрузка обновления на сервер.
        /// </summary>
        /// <returns></returns>
        private bool UploadNewUpdate()
        {
            string version = dt.Value("Version");

            if (!DeleteUpdate(version))
            {
                return(false);
            }
            string fileName  = "";
            string sql       = "";
            var    progress1 = new FormProgress("Обновление", "Загрузка файлов обновления на сервер", dt.Rows.Count);

            progress1.Show();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                try
                {
                    string fullName = dt.Value(i, "FullName");
                    if (!File.Exists(fullName))
                    {
                        continue;
                    }
                    string     fileData;
                    string     errorMes;
                    const bool showMes = true;
                    bool       check   = dt.Value(i, 0).ToBool();
                    if (!check)
                    {
                        continue;
                    }
                    string       numberFile   = progress1.Progress.ToString();
                    string       numberUpdate = dt.Value(i, "NumberUpdate");
                    string       dateRecord   = sys.GetDateTimeNow();
                    string       userUpdate   = Var.UserID.ToString();
                    const string contentType  = "";
                    const string operation    = "";
                    string       path         = dt.Value(i, "Path");
                    fileName = dt.Value(i, "Name");
                    string extension      = dt.Value(i, "Extension");
                    string creationTime   = dt.Value(i, "CreationTime");
                    string lastWriteTime  = dt.Value(i, "LastWriteTime");
                    string lastAccessTime = dt.Value(i, "LastAccessTime");
                    string sizeFile       = dt.Value(i, "Size");
                    string hashMD5        = dt.Value(i, "MD5");
                    if (!FBAFile.FileReadToBase64(fullName, out fileData, out errorMes, showMes))
                    {
                        return(false);
                    }

                    sql = @"INSERT INTO fbaUpdate (NumberFile, NumberUpdate, DateRecord, UserUpdate, " +
                          "ContentType, Operation, Version, CurrentVersion, FullName, Path, Name, Extension, " +
                          "CreationTime, LastWriteTime, LastAccessTime, Size, MD5, " +
                          "FileData) " +
                          "VALUES (" +
                          "'" + numberFile + "','" + numberUpdate + "','" + dateRecord + "','" + userUpdate + "'," +
                          "'" + contentType + "','" + operation + "','" + version + "','" + version + "','" + fullName + "','" + path + "','" + fileName + "','" + extension + "'," +
                          "'" + creationTime + "','" + lastWriteTime + "','" + lastAccessTime + "'," + sizeFile.ToString() + ", '" + hashMD5 + "'," +
                          "'" + fileData + "'); " + Var.CR;
                    if (!sys.Exec(DirectionQuery.Remote, sql))
                    {
                        return(false);
                    }
                } catch (Exception ex)
                {
                    sys.SM("Ошибка загрузки файла обновления: " + Var.CR + fileName + Var.CR + ex.Message);
                }
                progress1.Inc();
            }

            //В конце загрузки файлов на сервер обновляем информцию о текущей версии.
            sql = @"UPDATE fbaUpdate SET CurrentVersion = '" + version + "'; " + Var.CR;
            if (!sys.Exec(DirectionQuery.Remote, sql))
            {
                return(false);
            }

            progress1.Dispose();
            return(true);
        }
Пример #27
0
        /// <summary>
        /// Проверить неоходимость обновления и скачать обновление программы.
        /// Обновление работает так:
        /// Для того чтобы скачать обновление и обновиться нужно обновление закачать на сервер.
        /// Обновление exe файлов и других файлов клиента возможно только из рабочей базы данных.
        /// Обновление из файловой шары или из ресурса в интернете не сделано.
        /// Закачивает обновление на сервер программа Utility.exe.
        /// В её коде присаны все файлы, папки, которые нужно закачать на сервер.
        /// Там же указывается список папок или файлов, котороые подлежат удалению.
        /// Все файлы закачиваются на сервер в табличку fbaUpdate. В обновлении участвует только одна табличка.
        /// После этого при запуске Клиент обращается к этой табличку и смотрит, есть ли обновление (проверка по полю Version и CurrentVersion)
        /// Сравниваеся с текущей версии EXE файла. Если обновить нужно, то все файлы скачиваются клиентом в папку Update, предназначенную для этого.
        /// Перед скачиванием папка Update очищается полностью.
        /// Далее клиент запускает файл Updater.exe передавая в параметрах свое имя файла, а сам завершает работу.
        /// Updater.exe полностью независимый EXE, он независит от других файлов программы. Updater.exe заменяет файлы программы файлами из папки Update,
        /// Если при копировании происходит ошибка, то он пытается вернуть прежние версии файлов. После копирования он запускает EXE файл,
        /// имя которого было передано в параметрах, а сам завершает работу.
        /// Download      - true - скачать файлы обновления, false - только получить данные об обновлении.
        /// ResultUpdate  - описание выполненых действий.
        /// </summary>
        /// <param name="version"></param>
        /// <param name="numberUpdate"></param>
        /// <param name="resultMessage"></param>
        /// <param name="needUpdate"></param>
        /// <param name="showMes">false - тихий режим, сообщений пользователю не выдаем.  </param>
        /// <returns>Результат - true - требуется обновить, false - обновление не требуется.</returns>
        public static bool UpdateDownload(string version, string numberUpdate, out string resultMessage, out bool needUpdate, bool showMes)
        {
            resultMessage = "";
            DataTable dT1;
            DataTable dT2;
            string    sqlLocal;
            long      fileSize   = 0;
            var       fileCount  = 0;
            var       listDelete = new List <string>();

            string[] listNotDeleted;
            //Очищаем полность папку sys.PathUpdate.
            if (!FBAFile.DirClean(FBAPath.PathUpdate, out listNotDeleted, true))
            {
                needUpdate = false;
                return(false);
            }

            sqlLocal = "select ID, MD5, Path, FullName, ContentType, Operation, Size from fbaUpdate WHERE Version = '" + version + "' ORDER BY Numberupdate, Numberfile; ";
            sys.SelectDT(DirectionQuery.Remote, sqlLocal, out dT1);
            if (dT1.Rows.Count == 0)
            {
                resultMessage = ""; //Ошибка обновления. Не удается найти последниюю версию приложения!";
                needUpdate    = false;
                return(false);
            }

            var progress = new FormProgress("Обновление программы", "Получение файлов для обновления", dT1.Rows.Count);

            if (showMes)
            {
                progress.Show();
            }
            for (var i = 0; i < dT1.Rows.Count; i++)
            {
                var id             = dT1.Value(i, "ID");
                var md5Update      = dT1.Value(i, "MD5");
                var pathValue      = dT1.Value(i, "Path");
                var fullName       = dT1.Value(i, "FullName");
                var contentType    = dT1.Value(i, "ContentType");
                var operationL     = dT1.Value(i, "Operation");
                var size           = dT1.Value(i, "Size");
                var fileNameLocal  = fullName.Replace(pathValue, FBAPath.PathMain);
                var FileNameUpdate = fullName.Replace(pathValue, FBAPath.PathUpdate);
                if (operationL == "DELFILE" || operationL == "DELDIR")
                {
                    listDelete.Add(operationL + ": " + fullName);
                }
                if (operationL == "ADDDIR")
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(FileNameUpdate));
                }
                if (operationL == "ADDFILE")
                {
                    var MD5Local    = Crypto.FileHashMD5Calc(fileNameLocal);  //MD5 локального файла.
                    var MD5Download = Crypto.FileHashMD5Calc(FileNameUpdate); //MD5 уже скаченного ранее файла.

                    //Если рабочий файл не совпадает с обновлением:
                    if (md5Update != MD5Local)
                    {
                        fileSize  = fileSize + Convert.ToInt64(size);
                        fileCount = fileCount + 1;

                        //Если MD5 не совпадает между локальным файлом и файлом для обновления, то скачиваем файл.
                        sqlLocal = "SELECT FileData FROM fbaUpdate WHERE ID = " + id;
                        sys.SelectDT(DirectionQuery.Remote, sqlLocal, out dT2);
                        var FileData = dT2.Value("FileData");
                        Directory.CreateDirectory(Path.GetDirectoryName(FileNameUpdate));
                        if (!FBAFile.FileWriteFromBase64(FileData, FileNameUpdate, out resultMessage, showMes))
                        {
                            resultMessage = "Ошибка обновления. Не удается найти последниюю версию приложения!" +
                                            Var.CR + resultMessage;
                            needUpdate = false;
                            return(false);
                        }
                    }
                }
                if (listDelete.Count > 0)
                {
                    //Просто сохраняем в список то, что нужно удалить.
                    var fileName = FBAPath.PathUpdate + "ListDelete.txt";
                    var listStr  = string.Join(Var.CR, listDelete.ToArray());
                    File.WriteAllText(fileName, listStr, Encoding.Default);
                }
                if (showMes)
                {
                    progress.Inc();
                }
            }

            progress.Dispose();
            if (fileCount == 0 && listDelete.Count == 0)
            {
                resultMessage = "Обновление не требуется. Все текущие версии файлов совпадают с файлами обновления " +
                                version;
                needUpdate = false;
                return(true);
            }

            //Если нужно только удалить папки или файлы, то ставим размер обновления 1 кб,
            //чтобы не пугать пользователя.
            if (fileSize == 0)
            {
                fileSize = 1024;
            }
            var ResStr = "Порядковый номер обновления: " + numberUpdate + Var.CR + "Версия: " + version + Var.CR +
                         "Размер обновления: " + FBAFile.GetFileSizeStr(fileSize, true, true) + Var.CR +
                         "Количество файлов и папок: " + (fileCount + listDelete.Count) + Var.CR +
                         "Текущая версия программы: " + Var.ApplicationVersion;

            resultMessage = "Файлы для обновления скачаны и готовы для установки." + Var.CR + ResStr;
            needUpdate    = true;
            return(true); //true - обновлять нужно, false - обновление не требуется.
        }
Пример #28
0
        //Показывает список доступных обновлений.



        //Сохранить все файлы программы на сервере.
        //   //UserUpdate  - обновление доступно пользователям.
        //Upload      - Загрузить файлы на сервер.
        //ContentList - Cписок файлов и папок для обновления в определенном формате:
        //              ADDDIR:  CustomDorectoryName
        //              DELDIR:  CustomDorectoryName
        //              ADDFILE: CustomFileName.txt
        //              DELFILE: CustomFileName.txt



        /// <summary>
        ///
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="contentList"></param>
        /// <param name="doUserUpdate"></param>
        /// <param name="uploadToServer"></param>
        /// <returns></returns>
        private bool UpdateUploadFiles(out System.Data.DataTable dt, string[] contentList, bool doUserUpdate, bool uploadToServer)
        {
            dt = new System.Data.DataTable();
            string sql = "";

            //Для вставки полей в DT.
            string numberFile;
            int    numberUpdate;
            string dateRecord  = sys.DateTimeToSQLStr(DateTime.Now);
            string userUpdate  = (!doUserUpdate).ToInt().ToString();
            string contentType = "";
            string operation   = "";
            string version     = Var.ApplicationVersion;
            string fullName    = "";
            string path        = FBAPath.PathMain;
            string fileName    = "";
            string extension   = "";
            string creationTime;
            string lastWriteTime;
            string lastAccessTime;
            long   SizeFile;
            string hashMD5;
            string fileData = ""; //Данные в Base64.



            //Последняя версия в таблице обновлений.
            sql = "SELECT MAX(NumberUpdate) AS NumberVersion FROM fbaUpdate; ";
            string NumberUpdateStr = sys.GetValue(DirectionQuery.Remote, sql);

            if (NumberUpdateStr == "")
            {
                NumberUpdateStr = "0";
            }
            numberUpdate = NumberUpdateStr.ToInt() + 1; //Новая варсия.
            bool ff = true;
            Type tp = ff.GetType();

            dt.Columns.Add("Check", tp);      //Выбрать файл для заливки
            dt.Columns.Add("NumberFile");     //Порядковый номер файла или папки в обновлении
            dt.Columns.Add("NumberUpdate");   //Порядковый номер обновления.
            dt.Columns.Add("DateRecord");     //Текущая дата.
            dt.Columns.Add("UserUpdate");     //true-Пользователям нужно обновляться из это обновления. false-не нужно. false-нужно для тестирования, для отложенного обновления и др.
            dt.Columns.Add("ContentType");    //1-папка, 2-файл
            dt.Columns.Add("Operation");      //1-создать, 2-удалить.
            dt.Columns.Add("Version");        //Версия программы вида 1.0.6335.33362
            dt.Columns.Add("FullName");       //Полное имя файла с путем.
            dt.Columns.Add("Path");           //Начальный каталог программы, т.е. sys.PathMain
            dt.Columns.Add("Name");           //Имя файла/папки
            dt.Columns.Add("Extension");      //Расширение файла (для папки здесь пусто)
            dt.Columns.Add("CreationTime");   //Дата создания папки/файла
            dt.Columns.Add("LastWriteTime");
            dt.Columns.Add("LastAccessTime");
            dt.Columns.Add("Size");           //размер файла в байтах. Для папки здесь 0.
            dt.Columns.Add("MD5");            //Хеш MD5
                                              //DT.Columns.Add("FileData");    //Содержимое файла в кодировке Base64.


            sql = "DELETE FROM fbaUpdate WHERE Version = '" + version + "'; ";
            if (!sys.Exec(DirectionQuery.Remote, sql))
            {
                return(false);
            }


            var fileprop  = new string[16];
            var progress1 = new FormProgress("Обновление", "Получение свойств файлов", contentList.Length);

            progress1.Show();
            for (int i = 0; i < contentList.Length; i++)
            {
                fullName   = contentList[i];
                numberFile = (i + 1).ToString();

                if (!File.Exists(fileName))
                {
                    continue;
                }
                var file = new FileInfo(fullName);
                fileName       = file.Name;
                extension      = file.Extension;
                creationTime   = sys.DateTimeToSQLStr(file.CreationTime);
                lastWriteTime  = sys.DateTimeToSQLStr(file.LastWriteTime);
                lastAccessTime = sys.DateTimeToSQLStr(file.LastAccessTime);
                SizeFile       = file.Length;
                hashMD5        = Crypto.FileHashMD5Calc(fullName);

                fileprop[0]  = numberFile;
                fileprop[1]  = numberUpdate.ToString();
                fileprop[2]  = dateRecord;
                fileprop[3]  = userUpdate;
                fileprop[4]  = ""; //ContentType.ToString();
                fileprop[5]  = ""; //Operation.ToString();
                fileprop[6]  = version;
                fileprop[7]  = fullName;
                fileprop[8]  = path;
                fileprop[9]  = fileName;
                fileprop[10] = extension;
                fileprop[11] = creationTime;
                fileprop[12] = lastWriteTime;
                fileprop[13] = lastAccessTime;
                fileprop[14] = SizeFile.ToString();
                fileprop[15] = hashMD5;

                DataRow row = dt.NewRow();
                row.ItemArray = fileprop;
                dt.Rows.Add(row);
                if (uploadToServer)
                {
                    fileData = "";
                    string     errorMes;
                    const bool showMes = true;
                    if (!FBAFile.FileReadToBase64(fullName, out fileData, out errorMes, showMes))
                    {
                        return(false);
                    }

                    const bool saveHashToEndFile = false;
                    if (!FBAFile.FileGetBase64WithHashMD5(fileName, saveHashToEndFile, out fileData, out hashMD5))
                    {
                        return(false);
                    }

                    sql = @"INSERT INTO fbaUpdate (NumberFile, NumberUpdate, DateRecord, UserUpdate, " +
                          "ContentType, Operation, Version, CurrentVersion, FullName, Path, Name, Extension, " +
                          "CreationTime, LastWriteTime, LastAccessTime, Size, MD5, " +
                          "FileData) " +
                          "VALUES (" +
                          "'" + numberFile + "','" + numberUpdate + "','" + dateRecord + "','" + userUpdate + "'," +
                          "'" + contentType + "','" + operation + "','" + version + "','" + version + "','" + fullName + "','" + path + "','" + fileName + "','" + extension + "'," +
                          "'" + creationTime + "','" + lastWriteTime + "','" + lastAccessTime + "'," + SizeFile.ToString() + ", '" + hashMD5 + "'," +
                          "'" + fileData + "'); " + Var.CR;
                    if (!sys.Exec(DirectionQuery.Remote, sql))
                    {
                        return(false);
                    }
                }
                progress1.Inc();
            }

            //В конце загрузки файлов на сервер обновляем информцию о текущей версии.
            if (uploadToServer)
            {
                sql = @"UPDATE fbaUpdate SET CurrentVersion = '" + version + "'; " + Var.CR;
                if (!sys.Exec(DirectionQuery.Remote, sql))
                {
                    return(false);
                }
            }
            progress1.Dispose();
            return(true);
        }
Пример #29
0
        ///Событие. Главное меню.
        private void MainMenu_N1_1Click(object sender, EventArgs e)
        {
            if (sender == MainMenu_N1_1)
            {
                Environment.Exit(0);
            }
            if (sender == MainMenu_N2_3)
            {
                System.Diagnostics.Process.Start(FBAPath.PathAdditional + @"ColorTable.html");
            }
            if (sender == MainMenu_N2_4)
            {
                new FormReg().Show();
            }
            if (sender == MainMenu_N2_5)
            {
                System.Diagnostics.Process.Start(FBAPath.PathAdditional + @"ASCII.html");
            }
            if (sender == MainMenu_N2_6)
            {
                System.Diagnostics.Process.Start(FBAPath.PathAdditional + @"DataTimeFormat.html");
            }

            if (sender == MainMenu_N2_8)
            {
                FBAFile.FileRunEXESimple(FBAPath.PathMain + @"Updater.exe");
            }
            if (sender == MainMenu_N2_9)
            {
                FBAFile.FileRunEXESimple(FBAPath.PathMain + @"ServerApp.exe");
            }
            if (sender == MainMenu_N2_10)
            {
                FBAFile.FileRunEXESimple(FBAPath.PathMain + @"ClientApp.exe");
            }

            if (sender == MainMenu_N4_2)
            {
                new FormAbout().Show();
            }
            if (sender == MainMenu_N2_13)
            {
                new FormGrant().Show();
            }
            if (sender == MainMenu_N2_15)
            {
                new FormDDL().Show();
            }
            if (sender == MainMenu_N2_16)
            {
                new FormModel().Show();
            }
            if (sender == MainMenu_N2_17)
            {
                new FormSQL().Show();
            }
            if (sender == MainMenu_N2_18)
            {
                new FormUpdate().Show();
            }
            if (sender == MainMenu_N2_19)
            {
                new FormImage().Show();
            }
            if (sender == MainMenu_N2_20)
            {
                new FormText().Show();
            }
            if (sender == MainMenu_N2_21)
            {
                new FormParam().Show();
            }
            if (sender == MainMenu_N2_22)
            {
                new FormStatus().Show();
            }
            if (sender == MainMenu_N3_1)
            {
                new FormConList().Show();
            }
            if (sender == MainMenu_N2_23)
            {
                new ProjectService("").Show();
            }

            //Выбор шрифт всех форм.
            if (sender == MainMenu_N3_2)
            {
                if (fontDialog1.ShowDialog() == DialogResult.OK)
                {
                    Var.font1 = fontDialog1.Font;
                }
            }
            if (sender == MainMenu_N3_3)
            {
                string Path = "";
                if (!FBAFile.DirChoose(Application.StartupPath, out Path))
                {
                    return;
                }
                sys.ShowSolutionStringCodeCount(Path);
            }

            //Сущности.
            if (sender == MainMenu_N2_24)
            {
                sys.ShowDirectorySimple("Entity", "", "", "", null, "SELECT * FROM fbaEntity", "");
            }

            //Атрибуты.
            if (sender == MainMenu_N2_25)
            {
                sys.ShowDirectorySimple("Attribute", "", "", "", null, "SELECT * FROM fbaAttribute", "");
            }

            //Таблицы.
            if (sender == MainMenu_N2_26)
            {
                sys.ShowDirectorySimple("Table", "", "", "", null, "SELECT * FROM fbaTable", "");
            }

            //Шаблоны отчетов.
            if (sender == MainMenu_N2_27)
            {
                new FormReport().Show();
            }

            if (sender == MainMenu_N2_7)
            {
                System.Diagnostics.Process.Start(@"https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.media.brushes?view=netcore-3.0");
            }

            //Ошибки пользователей.
            if (sender == MainMenu_N2_28)
            {
                new FormError().Show();
            }

            //Справка
            if (sender == MainMenu_N4_1)
            {
                sys.ShowHelp();
            }
            //Help.ShowHelp(this, sys.PathHelp);

            //Форма для добавления методов сущностей.
            if (sender == MainMenu_N2_29)
            {
                new FormMethod().Show();
            }
        }
Пример #30
0
        ///Событие. Кнопки редактора запросов
        private void TbSQL1Click(object sender, EventArgs e)
        {
            string indexstr = tabControlSQL1.SelectedTab.Tag.ToString();
            //FastColoredTextBox f;
            //var textSQL11 = tabControSQL.Controls.Find("sdF").
            var textSQL = (FastColoredTextBox)tabControlSQL1.Controls.Find("textSQL" + indexstr, true).First();
            var dgvSQL  = (DataGridViewFBA)tabControlSQL1.Controls.Find("dgvSQL" + indexstr, true).First(); //textSQL1
            var fastColoredTextBoxSQL = (FastColoredTextBoxNS.FastColoredTextBox)tabControlSQL1.Controls.Find("fastColoredTextBoxSQL" + indexstr, true).First();

            if ((sender == textSQL) && (textSQL.Text == ""))
            {
                textSQL.AppendText("SELECT * FROM fbaEnterHist");
            }

            //Выполнить запрос.
            if (sender == tbSQL1)
            {
                var    tbSQLResult = (TextBox)tabControlSQL1.Controls.Find("tbSQLResult" + indexstr, true).First();
                string SQL         = textSQL.SelectedText;
                if (SQL == "")
                {
                    SQL = textSQL.Text;
                }

                string ExecTextSQL = SQL;
                if (cb_MSQL_SQL.Checked)
                {
                    ExecTextSQL = sys.Parse(SQL);
                }
                DateTime DateTime1 = DateTime.Now;
                sys.RefreshGrid(GetDirection(), dgvSQL, ExecTextSQL);
                tbSQLResult.Text = " Rows: " + dgvSQL.RowCount + "    Execute time: " + sys.GetTimeDiff(DateTime1, DateTime.Now);
            }

            //Распарсить запрос.
            if (sender == tbSQL7)
            {
                var    tbSQLResult = (TextBox)tabControlSQL1.Controls.Find("tbSQLResult" + indexstr, true).First();
                string SQL         = textSQL.SelectedText;
                if (SQL == "")
                {
                    SQL = textSQL.Text;
                }

                string   ExecTextSQL = SQL;
                DateTime DateTime1   = DateTime.Now;
                if (cb_MSQL_SQL.Checked)
                {
                    ExecTextSQL = sys.Parse(SQL);
                }
                fastColoredTextBoxSQL.Text = ExecTextSQL;
                tbSQLResult.Text           = " Execute time: " + sys.GetTimeDiff(DateTime1, DateTime.Now);
            }

            //Очистка редактора запросов
            if (sender == tbSQL2)
            {
                textSQL.Clear();
            }

            //Export to Excel
            if (sender == cm4)
            {
                dgvSQL.ExportToExcel();
            }

            //Новая вкладка.
            //В процедуру передаются компоненты с перовой вкладки (которая никогда не удаляется)
            //чтобы на их примере сделать новую вкладку.
            //Можно было бы и без них - но тогда пришлось бы каждый раз в коде изменять свойства компонентов.
            if (sender == tbSQL3)
            {
                TabControlPageAdd(tabControlSQL1, splitContainerSQL1, textSQL, pnlResultSQL1, tbSQLResult1, dgvSQL1, cmGrid, ref TabIndexSQL);
            }

            //Удалить вкладку
            if ((sender == tbSQL4) && (tabControlSQL1.TabPages.Count > 1))
            {
                tabControlSQL1.SelectedTab.Dispose();
            }

            //Открыть из CSV.
            if (sender == tbSQL5)
            {
                string       FileName         = "";
                string       ErrorMes         = "";
                const bool   ErrorShow        = true;
                const string InitialDirectory = "";
                if (!FBAFile.OpenFileName("", "CSV Files|*.csv|All Files|*.*", InitialDirectory, ref FileName))
                {
                    return;
                }
                System.Data.DataTable DT;
                sys.CSVToDataTable(out DT, FileName, out ErrorMes, ErrorShow);
                dgvSQL.DataSource = DT;
            }

            //Сохранить текст запроса.
            if (sender == tbSQL6)
            {
                string FileName = "";
                if (!FBAFile.SaveFileName("Save SQL", "SQL Files|*.sql|All Files|*.*", "", 0, ref FileName))
                {
                    return;
                }
                FBAFile.FileWriteTextObject(textSQL, FileName, true);
            }

            //Copy to Remote Database
            if (sender == cm1)
            {
                string SQL;
                string ServerTableName = "MyTableName";
                //if (Var.con.serverTypeRemote == ServerType.MSSQL) ServerTableName = "dbo.MyTableName";
                if (!sys.InputValue("Имя таблицы на сервере", "Имя таблицы", SizeMode.Small, ValueType.String, ref ServerTableName))
                {
                    return;
                }
                var DT = (DataTable)dgvSQL.DataSource;
                if (Var.con.serverTypeRemote == ServerType.MSSQL)
                {
                    //Способ Var.con.MSSQLCopyTableToServer работает быстрее для MSSQL, чем sys.GetTextTableToDatabase.
                    Var.con.MSSQLCopyTableToServer(DT, ServerTableName);
                }
                if (Var.con.serverTypeRemote == ServerType.Postgre)
                {
                    SQL = sys.GetTextTableToDatabase(Var.con.serverTypeRemote, ServerTableName, DT, true);
                    sys.Exec(DirectionQuery.Remote, SQL);
                }
                sys.SM("Таблица " + ServerTableName + " загружена на сервер " + Var.con.serverType, MessageType.Information);
            }

            //Copy to Local Database
            if (sender == cm2)
            {
                string ServerTableName = "MyTableName";
                if (!sys.InputValue("Имя таблицы на сервере", "Имя таблицы", SizeMode.Small, ValueType.String, ref ServerTableName))
                {
                    return;
                }
                var    DT  = (DataTable)dgvSQL.DataSource;
                string SQL = sys.GetTextTableToDatabase(ServerType.SQLite, ServerTableName, DT, true);
                Var.conLite.Exec(SQL);
                sys.SM("Таблица " + ServerTableName + " сохранена в локальной базе данных SQLite", MessageType.Information);
            }

            //Export to CSV
            if (sender == cm3)
            {
                string       FileName         = "Table_" + sys.GetDate4FileName(DateTime.Now) + ".csv";
                var          DT               = (DataTable)dgvSQL.DataSource;
                const string InitialDirectory = "";
                if (!FBAFile.SaveFileName("Import object", "XLS Files|*.xls|All Files|*.*", InitialDirectory, 0, ref FileName))
                {
                    return;
                }
                if (!sys.DataTableToCSV(DT, FileName, true))
                {
                    return;
                }
                //sys.SM("Таблица сохранена в файл: " + FileName, MessageType.Information);
                //sys.FileRunSimple(FileName);
                FBAFile.FileRunNotebook(FileName);
            }

            //Export to XLS
            if (sender == cm4)
            {
                var DT = (DataTable)dgvSQL.DataSource;
                if (!sys.DataTableToExcel(DT))
                {
                    return;
                }
                sys.SM("Таблица выгружена в файл XLS", MessageType.Information);
            }
        }