// Обработчик нажатия на пункт меню Экспорт\в 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, "Ошибка!"); } }
// Обработчик нажатия на пункт меню Удалить/резервную копию 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, "Ошибка!"); } } }
// Обработчик нажатия на пункт меню Экспорт\в файл 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, "Ошибка!"); } }
// Обработчик нажатия на пункт меню Переименовать 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("Не указано имя новой базы данных", "Ошибка!"); } }
// Обработчик нажатия на пункт меню Резервная копия\восстановить 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, "Ошибка!"); } }
// Обработчик нажатия на пункт меню Резервная копия\создать 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, "Ошибка!"); } }
// Обработчик нажатия на пункт меню Открыть 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, "Ошибка!"); } }