powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как определить RowIndex и ColumnIndex ячейки таблицы из-за значения которой возникла Error
4 сообщений из 4, страница 1 из 1
Как определить RowIndex и ColumnIndex ячейки таблицы из-за значения которой возникла Error
    #39510939
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, у меня возникла следующая проблема:
Есть таблица данных dtExcel в которой загружены данные из эксель файла. Далее я помечаю часть строка на добавление, а часть на обновление. Затем выполняю метод Update адаптера данных.
Вот часть кода:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 using (var adapter = DataAdapter(ref em, isHistory, _connection, _transaction))
                {
                    if (_connection.State == ConnectionState.Closed)
                        _connection.Open();
                    
                     adapter.Update(dtExcel);

                    //Некоторый код

                  
                    _transaction.Commit();
                }

            }
            catch (Exception ex)
            {

                 //Некоторый код
              
              _transaction.Rollback();
            }



Далее когда я в некоторой ячейки dtExcel (в экселе нет и не будет проверки на ввод данных определенного типа) есть значение не соответствующее по типу с типом столбца базы данных, тогда при выполнении команды Update возникает следующая ошибка (это все правильно) Не удалось преобразовать значение параметра из String в Decimal. .
Проблема заключается в том, что я хочу не просто выводить это сообщение, а также указывать в какой строке и столбце dtExcel находиться это недопустимое значение. Как мне это можно реализовать?
...
Рейтинг: 0 / 0
Как определить RowIndex и ColumnIndex ячейки таблицы из-за значения которой возникла Error
    #39510951
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно обработать событие датаадаптера RowUpdated, однако в выходном параметре (SqlRowUpdatedEventArgs e) обработчика этого события мы можем получить строку данных но нее порядковый номер в dtExcel, ну а номер столбца уж подавно мы не знаем.
Получается, что мы можем получить номер строки если мы добавим в dtExcel столбец содержащий значение порядкового номера строки, а вот номер столбца я даже на знаю как определить.
...
Рейтинг: 0 / 0
Как определить RowIndex и ColumnIndex ячейки таблицы из-за значения которой возникла Error
    #39510954
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Номер строки в сообытии можно получить с помощью метода dtExcel.Select("выражение_для_поиска");
...
Рейтинг: 0 / 0
Как определить RowIndex и ColumnIndex ячейки таблицы из-за значения которой возникла Error
    #39511142
ASukhov1986
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение задачи:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
using (var adapter = DataAdapter(ref em, isHistory, _connection, _transaction))
                {
                    adapter.RowUpdated += adapter_RowUpdated;

                    if (_connection.State == ConnectionState.Closed)
                        _connection.Open();
                    
                     adapter.Update(dtExcel);

                    adapter.RowUpdated -= adapter_RowUpdated;

                    //Некоторый код

                  
                    _transaction.Commit();
                }

            }
            catch (Exception ex)
            {

                 //Некоторый код
              
              _transaction.Rollback();
            }


//Добавленный обработчик событие RowUpdated
        private void adapter_RowUpdated(object sender, SqlRowUpdatedEventArgs e)
        {
            var row = e.Row;

            if (e.Errors != null)
                e.Errors =
                    new Exception(e.Errors.Message + " в строке номер " + (row.Table.Rows.IndexOf(row) + 1) + " справочника.");
        }
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как определить RowIndex и ColumnIndex ячейки таблицы из-за значения которой возникла Error
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]