private void ButtonAdd_Click(object sender, RoutedEventArgs e) { MsAccess acs = new MsAccess(); string result = "0"; string sql = $@" Select nrm.nrm_id From nrm Where nrm.nrm_dt = {DatePickerNorm.SelectedDate:#M-d-yyyy#} "; result = acs.GetValueSql(sql); if (result != "0") { MessageBox.Show($@"Данные на {DatePickerNorm.SelectedDate:#M-d-yyyy#} уже есть в системе"); return; } else { sql = $@"INSERT INTO nrm (nrm_dt, stf_tn, nrm_hr, nrm_scr) SELECT {DatePickerNorm.SelectedDate:#M-d-yyyy#}, stf_tn, nrm_hr, nrm_scr FROM nrm WHERE nrm_dt = (SELECT MAX(nrm_dt) FROM nrm WHERE nrm_dt <= { DatePickerNorm.SelectedDate :#M-d-yyyy#})"; acs.GetValueSql(sql); GenerateNormsDep(); //Запись лога acs.Log(DatePickerNorm.SelectedDate.Value.ToShortDateString(), "Создание"); } }
private void ButtonCopy_Click(object sender, RoutedEventArgs e) { if (ComboBoxMp.SelectedIndex == -1) { MessageBox.Show("Выберите менедежара потока"); return; } DataRowView dataRow = (DataRowView)DataGridRequests.SelectedItem; string ordNum; try { ordNum = dataRow.Row.ItemArray[1].ToString(); } catch (NullReferenceException) { return; } string sql = $@"SELECT cor.cor_id FROM ord INNER JOIN (cor INNER JOIN app ON cor.cor_id = app.cor_id) ON ord.ord_id = app.ord_id WHERE (((ord.ord_num)='{ordNum}'));"; MsAccess acs = new MsAccess(); DataTable dt = acs.CreateDataTable(sql); //Преобразую DataTable в IList<int> IList <int> list = dt.AsEnumerable() .Select(r => r.Field <int>("cor_id")) .ToList(); Order order = new Order { DateOrder = DateTime.Parse(ComboBoxDate.SelectedValue.ToString()), MngTn = ComboBoxMp.SelectedValue.ToString(), //Для расстановки true в checkboxes содержания заявки ContentOrders = list }; order.ShowDialog(); DataGridReqReload(); CountRequestsMp(); //Запись лога acs.Log(ordNum, "Копирование"); }
private void ButtonDel_Click(object sender, RoutedEventArgs e) { //Удаление обращения MsAccess acs = new MsAccess(); DataRowView dataRow = (DataRowView)DataGridRequests.SelectedItem; //Получаю номер заявки string ordNum = dataRow.Row.ItemArray[1].ToString(); //Получаю дату заявки DateTime ordDt = (DateTime)dataRow.Row.ItemArray[2]; //Формирую предупреждающее сообщение MessageBoxResult msg = MessageBox.Show( messageBoxText: $"Будет удалено обращение {ordNum} от {ordDt:MM.dd.yyyy}\nПродолжить?" , caption: "Внимание" , button: MessageBoxButton.YesNo); if (msg == MessageBoxResult.No) { return; } //Удаляю заявку из трех таблиц OleDbConnection connection = acs.CreateConnection(); OleDbTransaction transaction = connection.BeginTransaction(); OleDbCommand command = connection.CreateCommand(); command.CommandText = $@"DELETE flw.* FROM ord INNER JOIN flw ON ord.ord_id = flw.ord_id WHERE ord.ord_num=""{ordNum}"";"; command.Transaction = transaction; int ordDelRows = 0; //Удаляю из flw try { ordDelRows = command.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("Не могу удалить обращение из таблицы flw"); transaction.Rollback(); return; } command.CommandText = $@"DELETE app.* FROM ord INNER JOIN app ON ord.ord_id = app.ord_id WHERE ord.ord_num=""{ordNum}"";"; command.Transaction = transaction; //Удаляю из app try { ordDelRows = command.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("Не могу удалить содержание обращения из таблицы app"); transaction.Rollback(); return; } command.CommandText = $@"DELETE ord.* FROM ord WHERE ord.ord_num=""{ordNum}"";"; command.Transaction = transaction; //Удаляю из ord try { ordDelRows = command.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("Не могу удалить обращение из таблицы ord"); transaction.Rollback(); return; } //Подтверждаю транзакцию если все в порядке transaction.Commit(); connection.Close(); //Обновление DataGrid DataGridReqReload(); //Подсчет кол-ва обращений CountRequestsMp(); //Запись лога acs.Log(ordNum, "Удаление"); }
private void ButtonUpdate_Click(object sender, RoutedEventArgs e) { MsAccess acs = new MsAccess(); string normDbPath = Environment.CurrentDirectory + @"\Resources\Norm.accdb"; OleDbConnection connection = acs.CreateConnection(); OleDbTransaction transaction = connection.BeginTransaction(); OleDbCommand command = connection.CreateCommand(); //Удаление норм из родительской базы command.CommandText = $@"DELETE FROM nrm WHERE nrm_dt = {DatePickerNorm.SelectedDate:#M-d-yyyy#} AND stf_tn IN (SELECT stf_tn FROM nrm IN '{normDbPath}')"; command.Transaction = transaction; int deteleRows = 0; try { deteleRows = command.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("Ошибка удаления старых данных. Проверьте данные и повторите попытку."); connection.Close(); return; } //Вставка норм в родительскую базу if (deteleRows > 0) { command.CommandText = $@"INSERT INTO nrm (nrm_dt, stf_tn, nrm_hr, nrm_scr) SELECT nrm.nrm_dt, nrm.stf_tn, nrm.nrm_hr, nrm.nrm_scr FROM nrm IN '{normDbPath}'"; command.Transaction = transaction; } int insertRows = 0; try { insertRows = command.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("Ошибка вставки. Проверьте данные и повторите попытку."); connection.Close(); return; } //Удаление норм в локальной базе данных if (insertRows > 0) { command.CommandText = $@"DELETE FROM nrm IN '{normDbPath}'"; command.Transaction = transaction; } int deleteLocalRows = 0; try { deleteLocalRows = command.ExecuteNonQuery(); } catch (Exception) { MessageBox.Show("Ошибка удаления данных из локальной базы. Проверьте данные и повторите попытку."); connection.Close(); return; } if (deleteLocalRows == 0) { transaction.Rollback(); connection.Close(); MessageBox.Show("Ошибка редактирования данных"); return; } transaction.Commit(); connection.Close(); MessageBox.Show("Данные изменены"); ButtonUpdate.Visibility = Visibility.Collapsed; ButtonReset.Visibility = Visibility.Collapsed; GenerateNormsDep(); acs.Log(DatePickerNorm.SelectedDate.Value.ToShortDateString() + "_" + _dep, "Изменение"); }