Пример #1
0
        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(), "Создание");
            }
        }
Пример #2
0
        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, "Копирование");
        }
Пример #3
0
        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, "Удаление");
        }
Пример #4
0
        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, "Изменение");
        }