Ошибка «Невозможно изменить тип данных столбца, если в нем есть данные» в Visual Studio 2005 DataSet Designer

StackOverflow https://stackoverflow.com/questions/47217

Вопрос

У меня есть набор данных в VisualStudio 2005.Мне нужно изменить тип данных столбца в одной из таблиц данных с System.Int32 к System.Decimal.Когда я пытаюсь изменить тип данных в DataSet Designer Я получаю следующую ошибку:

Недопустимая стоимость недвижимости.Не может изменить дат данных столбца, когда у него есть данные.

Насколько я понимаю, это должно изменить тип данных в схеме DataSet.Я не понимаю, как могут быть какие-либо данные, вызывающие эту ошибку.

У кого-нибудь есть идеи?

Это было полезно?

Решение

Я получаю ту же ошибку, но только для столбцов с ее DefaultValue установить любое значение (кроме значения по умолчанию <DBNull>).Итак, я решил эту проблему следующим образом:

  1. Столбец Значение по умолчанию:Введите <DBNull>
  2. Сохраните и снова откройте набор данных

Другие советы

Поскольку заполненные таблицы данных не допускают изменений в схеме, можно применить обходное решение следующим образом:

  1. Создать новую таблицу данных

  2. Используйте метод клона Datatable, чтобы создать DataTable с той же структурой и внести изменения в этот столбец

  3. В конце используйте метод Importrow от DataTable, чтобы заполнить его данными.

ХТХ

Я нашел обходной путь.Если я удалю столбец данных и добавлю его обратно с другим типом данных, он будет работать.

Для тех, кто нашел это через Google, и у вас немного другой случай, когда в вашей таблице есть данные, и вы добавляете новый столбец (как я), если вы создаете столбец и устанавливаете тип данных в отдельных инструкциях, вы также получаете то же самое исключение.Однако, если вы сделаете это в том же операторе, все будет работать нормально.

Итак, вместо этого:

var column = myTable.Columns.Add("Column1");
column.DataType = typeof(int); //nope, exception!

Сделай это:

var column = myTable.Columns.Add("Column1", typeof(int));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top