public void RefillData(int repYear) { if (_mergeTable == null) { _mergeTable = MergiesView.CreateTable(); } else { _mergeTable.Rows.Clear(); } if (_mergeBS == null) { _mergeBS = new BindingSource(); } string commText = MergiesView.GetSelectText(_org.idVal, repYear); SQLiteDataAdapter adapter = new SQLiteDataAdapter(commText, _connection); adapter.Fill(_mergeTable); mergeView.AutoGenerateColumns = false; mergeView.DataSource = _mergeBS; _mergeBS.DataSource = _mergeTable; MarkActualRow(); SetPrivilege(_privilege); }
/// <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 GetCountsFromMergies() { _mergiesCountLists = 0; _mergiesCountDocs = 0; using (SQLiteConnection connection = new SQLiteConnection(_connection)) { if (connection.State != ConnectionState.Open) { connection.Open(); } using (SQLiteCommand command = connection.CreateCommand()) { command.CommandText = MergiesView.GetSelectActualText(_organization.idVal, _repYear); SQLiteDataReader reader = command.ExecuteReader(); if (reader.Read()) { _mergiesCountLists = Convert.ToInt32(reader[MergiesView.listCount]); _mergiesCountDocs = Convert.ToInt32(reader[MergiesView.docCount]); szvGroupBox.Visible = true; tabPageDB.Controls.Remove(szv3WarningLabel); } else { _mergiesCountLists = -1; _mergiesCountDocs = -1; szvGroupBox.Visible = false; // // szv3WarningLabel // szv3WarningLabel.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(204))); szv3WarningLabel.ForeColor = Color.Red; szv3WarningLabel.Location = new Point(6, 342); szv3WarningLabel.Name = "szv3WarningLabel"; szv3WarningLabel.Size = new Size(286, 53); szv3WarningLabel.TabIndex = 12; szv3WarningLabel.Text = @"Сводная ведомость СЗВ-3 не обнаружена! Формирование электронных данных невозможно!"; szv3WarningLabel.TextAlign = ContentAlignment.MiddleCenter; tabPageDB.Controls.Add(szv3WarningLabel); } } } packetCountBox.Text = _mergiesCountLists.ToString(); docCountBox.Text = _mergiesCountDocs.ToString(); }
/// <summary> /// Производит заполнение записи сводной ведомости из полей формы /// </summary> private void SetMergeData() { if (_mergeRow == null) { _mergeRow = MergiesView.CreateTable().NewRow(); _mergeRow[MergiesView.newDate] = DateTime.Now.ToString("yyyy-MM-dd H:mm:ss"); _mergeRow[MergiesView.id] = -1; } _mergeRow[MergiesView.listCount] = (int)packetcountBox.Value; _mergeRow[MergiesView.docCount] = (int)documentcountBox.Value; _mergeRow[MergiesView.repYear] = int.Parse(yearBox.Text); _mergeRow[MergiesView.orgID] = _org.idVal; _mergeRow[MergiesView.operName] = _oper.nameVal; _mergeRow[MergiesView.editDate] = DateTime.Now; _mergeRow.EndEdit(); }
/// <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(); }