예제 #1
0
        // Обработчик нажатия на пункт меню Экспорт\в Excel
        private async void ExportToExcel_Click(object sender, EventArgs e)
        {
            string DbName;
            using (DbListForm dblistwindow = new DbListForm("db"))
            {
                dblistwindow.Text = "Экспорт базы данных в Excel";
                dblistwindow.ShowDialog();
                DbName = dblistwindow.ChosenDbName;
            }

                try
                {
                    // Если задано имя БД
                    if (DbName != null && DbName != "NULL")                                            
                        // Задаем имя Excel файла для экспорта
                        using (SaveFileDialog savefiledialog = new SaveFileDialog())
                        {
                            savefiledialog.Title = "Экспорт базы данных в Excel";
                            savefiledialog.Filter = "*.xlsx|*.xlsx";

                            if (savefiledialog.ShowDialog() == DialogResult.OK)
                            {
                                await Task.Run(() =>
                                {
                                    // Создаем строку подключения
                                    string DbPath = Uchet.Properties.Settings.Default.dbDir + DbName;
                                    EntityConnectionStringBuilder ConnectionString = new EntityConnectionStringBuilder();
                                    ConnectionString.ProviderConnectionString = "data source=" + DbPath;
                                    ConnectionString.Provider = Uchet.Properties.Settings.Default.dbProvider;
                                    ConnectionString.Metadata = @Uchet.Properties.Settings.Default.dbMetadata;

                                    // Создаем подключение
                                    DBEntity DB = new DBEntity(ConnectionString.ToString());

                                    // Заполняем коллекции объектами записей таблиц БД
                                    List<GearCountEntity> GCList = DB.GC.ToList<GearCountEntity>();
                                    List<GearPriceEntity> GPList = DB.GP.ToList<GearPriceEntity>();
                                    List<GearSumEntity> GSList = DB.GS.ToList<GearSumEntity>();

                                    // Создаем и открываем Excel файл
                                    File.Copy(Uchet.Properties.Settings.Default.xlsTemplate, savefiledialog.FileName, true);
                                    Excel.Application ExcelApp = new Excel.Application();
                                    ExcelApp.Visible = false;
                                    Excel.Workbook ExcelBook = ExcelApp.Workbooks.Open(savefiledialog.FileName);

                                    // Выводим содержимое колекции GCList в 1ую таблицу Excel файла
                                    Excel.Worksheet ExcelSheet = ExcelBook.Sheets[1];
                                    int i = 2;
                                    foreach (GearCountEntity Item in GCList)
                                    {
                                        ExcelSheet.Cells[i, 1] = Item.ID;
                                        ExcelSheet.Cells[i, 2] = Item.FIO;
                                        ExcelSheet.Cells[i, 3] = Item.Gear1_Count;
                                        ExcelSheet.Cells[i, 4] = Item.Gear2_Count;
                                        ExcelSheet.Cells[i, 5] = Item.Gear3_Count;
                                        ++i;
                                    }

                                    // Выводим содержимое колекции GPList в 2ую таблицу Excel файла
                                    ExcelSheet = ExcelBook.Sheets[2];
                                    i = 2;
                                    foreach (GearPriceEntity Item in GPList)
                                    {
                                        ExcelSheet.Cells[i, 1] = Item.Gear_Name;
                                        ExcelSheet.Cells[i, 2] = Item.Gear_Price;
                                        ++i;
                                    }

                                    // Выводим содержимое колекции GSList в 3ую таблицу Excel файла
                                    ExcelSheet = ExcelBook.Sheets[3];
                                    i = 2;
                                    foreach (GearSumEntity Item in GSList)
                                    {
                                        ExcelSheet.Cells[i, 1] = Item.ID;
                                        ExcelSheet.Cells[i, 2] = Item.FIO;
                                        ExcelSheet.Cells[i, 3] = Item.Gear1_Sum;
                                        ExcelSheet.Cells[i, 4] = Item.Gear2_Sum;
                                        ExcelSheet.Cells[i, 5] = Item.Gear3_Sum;
                                        ExcelSheet.Cells[i, 6] = Item.Gear_Sum;
                                        ++i;
                                    }

                                    // Сохраняем изменения и выходим
                                    ExcelBook.Save();
                                    ExcelApp.Quit();
                                    DB.Dispose();
                                });
                            }
                        }
                        else
                            if (DbName != "NULL")
                                MessageBox.Show("Не выбрана База Данных", "Ошибка!");     
                    }                

                catch (Exception exeption)
                {
                    MessageBox.Show(exeption.Message, "Ошибка!");
                }                        
        }
예제 #2
0
        // Обработчик нажатия на пункт меню Удалить/резервную копию
        private void Deletedbbackup_Click(object sender, EventArgs e)
        {
            using (DbListForm dblistwindow = new DbListForm("dbbackup"))
            {
                dblistwindow.Text = "Удалить резервную копию";
                dblistwindow.All.Visible = true;
                dblistwindow.ShowDialog();

                try
                {
                    // Если выбраны все базы данных и список не пуст
                    if (dblistwindow.DbList.Count > 0)
                    {
                        foreach (string item in dblistwindow.DbList)
                            File.Delete(item);
                    }
                    // Если задано имя БД
                    else if ((dblistwindow.ChosenDbName != null) && (dblistwindow.ChosenDbName != "NULL"))
                    {
                        File.Delete(Uchet.Properties.Settings.Default.dbBakDir + dblistwindow.ChosenDbName);
                    }
                    // Если не задано имя БД
                    else if (dblistwindow.ChosenDbName == null)
                        MessageBox.Show("Не выбрана База Данных", "Ошибка!");
                }

                catch (Exception exeption)
                {
                    MessageBox.Show(exeption.Message, "Ошибка!");
                }
            }            
        }
예제 #3
0
        // Обработчик нажатия на пункт меню Экспорт\в файл
        private void ExportToFile_Click(object sender, EventArgs e)
        {
            string DbName;
            using (DbListForm dblistwindow = new DbListForm("db"))
            {
                dblistwindow.Text = "Экспорт базы данных в файл";
                dblistwindow.ShowDialog();
                DbName = dblistwindow.ChosenDbName;
            }

            try
            {
                // Если задано имя БД
                if (DbName != null && DbName != "NULL")                    
                    using (SaveFileDialog savefiledialog = new SaveFileDialog())
                    {
                        savefiledialog.Title = "Экспорт базы данных";
                        savefiledialog.Filter = "*.s3db|*.s3db";
                        if (savefiledialog.ShowDialog() == DialogResult.OK)
                        {
                            File.Copy(Uchet.Properties.Settings.Default.dbDir
                                        + DbName, savefiledialog.FileName);                                
                        }
                    }
                // Если нажата кнопка выбрать, но не задано имя БД
                else
                    if (DbName != "NULL")
                        MessageBox.Show("Не выбрана База Данных", "Ошибка!");
            }

            catch (Exception exeption)
            {
                MessageBox.Show(exeption.Message, "Ошибка!");
            }                      
        }
예제 #4
0
        // Обработчик нажатия на пункт меню Переименовать
        private void RenameDbMenu_Click(object sender, EventArgs e)
        {
            string OldDbName;
            using (DbListForm dblistwindow = new DbListForm("db"))
            {
                dblistwindow.Text = "Переименовать базу данных";
                dblistwindow.ShowDialog();
                OldDbName = dblistwindow.ChosenDbName;
            }

            string NewDbName;
            using (DbNameForm dbnamewindow = new DbNameForm())
            {
                dbnamewindow.Text = "Переименовать базу данных";
                dbnamewindow.NameBox.Text = "Введите новое имя для базы данных";
                dbnamewindow.ShowDialog();
                NewDbName = dbnamewindow.NameBox.Text;
            }

            // Если выбрана БД и задано новое имя
            if ((NewDbName != "NULL") && (NewDbName != null)
                 && (NewDbName != "Введите новое имя для базы данных") && (NewDbName.Length > 0)
                 && (OldDbName != null) && (OldDbName != "NULL"))
            {
                try
                {
                    File.Move(Uchet.Properties.Settings.Default.dbDir + OldDbName, 
                              Uchet.Properties.Settings.Default.dbDir + NewDbName +".s3db");
                }

                catch (Exception exeption)
                {
                    MessageBox.Show(exeption.Message, "Ошибка!");
                }
            }

            // Если нажата кнопка выбрать, но не задано имя БД
            if (OldDbName == null)
            {
                MessageBox.Show("Не выбрана База Данных", "Ошибка!");
                return;
            }

            // Если имя БД не задано
            if ((NewDbName == null) || (NewDbName == "Введите новое имя для базы данных")
                 || (NewDbName.Length == 0))
            {
                MessageBox.Show("Не указано имя новой базы данных", "Ошибка!");                
            }                      
        }
예제 #5
0
        // Обработчик нажатия на пункт меню Резервная копия\восстановить
        private void Restoredbbackup_Click(object sender, EventArgs e)
        {
            string DbBakName;
            using (DbListForm dblistwindow = new DbListForm("dbbackup"))
            {
                dblistwindow.Text = "Восстановить базу данных из резервной копии";
                dblistwindow.ShowDialog();
                DbBakName = dblistwindow.ChosenDbName;
            }

                try
                {
                    // Если задано имя БД
                    if (DbBakName != null && DbBakName != "NULL")
                    {                        
                        string DbName = DbBakName.Remove(DbBakName.IndexOf('('), DbBakName.IndexOf(')')
                                        - DbBakName.IndexOf('(') + 1);
                        File.Copy(Uchet.Properties.Settings.Default.dbBakDir + DbBakName,
                                  Uchet.Properties.Settings.Default.dbDir + DbName, true);
                    }
                    // Если нажата кнопка выбрать, но не задано имя БД
                    else
                        if (DbBakName != "NULL")
                            MessageBox.Show("Не выбрана База Данных", "Ошибка!");                     
                }

                catch (Exception exeption)
                {
                    MessageBox.Show(exeption.Message, "Ошибка!");
                }                  
        }
예제 #6
0
        // Обработчик нажатия на пункт меню Резервная копия\создать
        private void Createdbbackup_Click(object sender, EventArgs e)
        {
            string DbName;
            using (DbListForm dblistwindow = new DbListForm("db"))
            {
                dblistwindow.Text = "Создать резервную копию базы данных";
                dblistwindow.ShowDialog();
                DbName = dblistwindow.ChosenDbName;
            }

            try
            {
                // Если задано имя БД
                if (DbName != null && DbName != "NULL")
                {                        
                    string currentTime = DateTime.Now.ToString().Replace(':', '-').Replace(' ', ',');
                    string DbBakName = DbName.Insert(DbName.LastIndexOf('.'), "(" + currentTime + ")");
                    File.Copy(Uchet.Properties.Settings.Default.dbDir + DbName,
                                Uchet.Properties.Settings.Default.dbBakDir + DbBakName, true);
                }
                // Если нажата кнопка выбрать, но не задано имя БД
                else
                    if (DbName != "NULL")
                        MessageBox.Show("Не выбрана База Данных", "Ошибка!");                       
            }

            catch (Exception exeption)
            {
                MessageBox.Show(exeption.Message, "Ошибка!");
            }                     
        }
예제 #7
0
        // Обработчик нажатия на пункт меню Открыть
        private async void OpenMenu_Click(object sender, EventArgs e)
        {
            string DbName;
            using (DbListForm dblistwindow = new DbListForm("db"))
            {
                dblistwindow.Text = "Открыть базу данных";
                dblistwindow.ShowDialog();
                DbName = dblistwindow.ChosenDbName;
            }

            try
            {
                // Если задано имя БД
                if (DbName != null && DbName != "NULL")
                {                        
                    // Меняем контролы MainForm                
                    this.CreateMenu.Enabled = false;
                    this.OpenMenu.Enabled = false;
                    this.BackupMenu.Enabled = false;
                    this.RenameDbMenu.Enabled = false;
                    this.ExportMenu.Enabled = false;
                    this.ImportMenu.Enabled = false;
                    this.DeleteMenu.Enabled = false;
                        // Асинхронно
                        if (await this.DbConnectAsync(DbName))
                        {
                            this.Text = "Учет выработки рабочих" + "(открытая база данных: " + DbName + ")";
                            this.SaveMenu.Enabled = true;
                            this.BuildTableMenu.Enabled = true;
                            this.CloseTableMenu.Enabled = true;
                            this.SearchBox.Visible = true;
                            this.Search.Visible = true;
                            this.ClearSearch.Visible = true;
                            this.TabField.Visible = true;
                        }
                        else
                        {
                            gearCountEntityBindingSource.DataSource = null;
                            gearPriceEntityBindingSource.DataSource = null;
                            gearSumEntityBindingSource.DataSource = null;
                            this.Table1.Update();
                            this.Table2.Update();
                            this.Table3.Update();
                            this.Text = "Uchet - Учет выработки рабочих";
                            this.CreateMenu.Enabled = true;
                            this.OpenMenu.Enabled = true;
                            this.SaveMenu.Enabled = false;
                            this.BackupMenu.Enabled = true;
                            this.RenameDbMenu.Enabled = true;
                            this.ExportMenu.Enabled = true;
                            this.ImportMenu.Enabled = true;
                            this.DeleteMenu.Enabled = true;
                        }
                }
                // Если нажата кнопка выбрать, но не задано имя БД
                else
                    if (DbName != "NULL")
                        MessageBox.Show("Не выбрана База Данных", "Ошибка!");                        
            }

            catch (Exception exeption)
            {
                MessageBox.Show(exeption.Message, "Ошибка!");
            }                         
        }