/// <summary> /// Производит сохранение данных в БД созданной сводной ведомости /// </summary> private void SaveNew() { // создать виртуальную таблицу с пустыми записями _mergeInfoTable = MergeInfo.CreateTableWithRows(); // скопировать данные из транспонированной таблицы в созданную MergeInfoTranspose.ConvertToMergeInfo(_svodTable, _mergeInfoTable); // просчитать суммы в созданной таблицйе MergeInfo.MathSums(_mergeInfoTable); // заполнение данными записи Сводной ведомости SetMergeData(); // создание подключения к БД SQLiteConnection connection = new SQLiteConnection(_connection); // создание команд для вставки данных в БД SQLiteCommand mergeInsert = MergiesView.InsertCommand(_mergeRow); SQLiteCommand tableInsert = MergeInfo.CreateInsertCommand(); SQLiteCommand fixdataReplace = new SQLiteCommand(); SQLiteCommand setUnactual = new SQLiteCommand(MergiesView.GetChangeActualByOrgText(_org.idVal, (int)_mergeRow[MergiesView.repYear], false)); // создание Адаптера для обработки таблицы SQLiteDataAdapter adapter = new SQLiteDataAdapter(); adapter.InsertCommand = tableInsert; // присвоение созданного подключения коммандам mergeInsert.Connection = tableInsert.Connection = fixdataReplace.Connection = setUnactual.Connection = connection; // открытие соединения connection.Open(); // начать транзакция SQLiteTransaction transaction = connection.BeginTransaction(); // прикрепление транзакции mergeInsert.Transaction = tableInsert.Transaction = fixdataReplace.Transaction = setUnactual.Transaction = transaction; // выполнить команду обнуления актуальности сводных ведомостей в выбранном году для текущей организаций setUnactual.ExecuteNonQuery(); // выполнить команду вставки записи о новой сводной ведомости и назначения ее актуальной _mergeRow[MergiesView.id] = mergeInsert.ExecuteScalar(); _mergeRow.EndEdit(); // внести запись о факте создания записи сводной ведомости fixdataReplace.CommandText = MergiesView.GetReplaceFixDataText(_mergeRow, FixData.FixType.New); fixdataReplace.ExecuteNonQuery(); // заполнить соответствующий столбец таблицы ID сводной ведомости для их привязки к ней (сводной ведомости) MergeInfo.SetMergeID(_mergeInfoTable, (long)_mergeRow[MergiesView.id]); // ввыполнить вставку записей из таблицы программы в таблицу БД adapter.Update(_mergeInfoTable); // принять подключение transaction.Commit(); // закрыть соединение connection.Close(); }
private void SvodVedomostEditDocumentForm_Load(object sender, EventArgs e) { _svodBS = new BindingSource(); _svodTable = MergeInfoTranspose.CreateTable(); regnumBox.Text = _org.regnumVal; orgnameBox.Text = _org.nameVal; if (_mergeRow == null) { //this.packetcountBox.Value = 0; //this.documentcountBox.Value = 0; _mergeInfoTable = null; } else { yearBox.Text = _mergeRow[MergiesView.repYear].ToString(); packetcountBox.Value = (int)_mergeRow[MergiesView.listCount]; documentcountBox.Value = (int)_mergeRow[MergiesView.docCount]; _mergeInfoTable = MergeInfo.CreateTable(); SQLiteDataAdapter adapter = new SQLiteDataAdapter(MergeInfo.GetSelectText((long)_mergeRow[MergiesView.id]), _connection); adapter.Fill(_mergeInfoTable); MergeInfoTranspose.ConvertFromMergeInfo(_svodTable, _mergeInfoTable); sum1Box.Text = MergeInfo.GetSum(_mergeInfoTable, SalaryGroups.Column1).ToString("N2"); sum2Box.Text = MergeInfo.GetSum(_mergeInfoTable, SalaryGroups.Column2).ToString("N2"); sum3Box.Text = MergeInfo.GetSum(_mergeInfoTable, SalaryGroups.Column3).ToString("N2"); sum4Box.Text = MergeInfo.GetSum(_mergeInfoTable, SalaryGroups.Column4).ToString("N2"); sum5Box.Text = MergeInfo.GetSum(_mergeInfoTable, SalaryGroups.Column5).ToString("N2"); if (!(bool)_mergeRow[MergiesView.actual]) { packetcountBox.Enabled = false; documentcountBox.Enabled = false; dataView.ReadOnly = true; saveButton.Enabled = false; autofillButton.Enabled = false; } } _svodBS.DataSource = _svodTable; dataView.AutoGenerateColumns = false; dataView.DataSource = _svodBS; _svodTable.ColumnChanged += new DataColumnChangeEventHandler(_svodTable_ColumnChanged); dataView.CellParsing += new DataGridViewCellParsingEventHandler(dataView_CellParsing); dataView.DataError += new DataGridViewDataErrorEventHandler(dataView_DataError); }
/// <summary> /// Производит сохранение данных в БД измененной сводной ведомости /// </summary> private void SaveEdited() { // скопировать данные с транспонированной таблицы в таблицу, соответствующую по структуре с таблицей БД MergeInfoTranspose.ConvertToMergeInfo(_svodTable, _mergeInfoTable); // просчитать суммы в созданной таблицйе MergeInfo.MathSums(_mergeInfoTable); // заполнение данными записи Сводной ведомости SetMergeData(); // создание подключения к БД SQLiteConnection connection = new SQLiteConnection(_connection); // создание команд для вставки данных в БД SQLiteCommand mergeInsert = MergiesView.UpdateCommand(_mergeRow); SQLiteCommand tableInsert = MergeInfo.CreateUpdateCommand(); SQLiteCommand fixdataReplace = new SQLiteCommand(); // создание Адаптера для обработки таблицы SQLiteDataAdapter adapter = new SQLiteDataAdapter(); adapter.UpdateCommand = tableInsert; // присвоение созданного подключения коммандам mergeInsert.Connection = tableInsert.Connection = fixdataReplace.Connection = connection; // открытие соединения connection.Open(); // начать транзакция SQLiteTransaction transaction = connection.BeginTransaction(); // прикрепление транзакции mergeInsert.Transaction = tableInsert.Transaction = fixdataReplace.Transaction = transaction; // выполнить обновление данных о сводной ведомости mergeInsert.ExecuteNonQuery(); // выполнить вставку(обновление) данных о факте изменения сводной ведомости fixdataReplace.CommandText = MergiesView.GetReplaceFixDataText(_mergeRow, FixData.FixType.Edit); fixdataReplace.ExecuteNonQuery(); // выполнить обносление данных по значениям выплат adapter.Update(_mergeInfoTable); // принять подключение transaction.Commit(); // закрыть соединение connection.Close(); }