Ошибка «Невозможно изменить тип данных столбца, если в нем есть данные» в Visual Studio 2005 DataSet Designer
-
09-06-2019 - |
Вопрос
У меня есть набор данных в VisualStudio 2005.Мне нужно изменить тип данных столбца в одной из таблиц данных с System.Int32
к System.Decimal
.Когда я пытаюсь изменить тип данных в DataSet Designer
Я получаю следующую ошибку:
Недопустимая стоимость недвижимости.Не может изменить дат данных столбца, когда у него есть данные.
Насколько я понимаю, это должно изменить тип данных в схеме DataSet.Я не понимаю, как могут быть какие-либо данные, вызывающие эту ошибку.
У кого-нибудь есть идеи?
Решение
Я получаю ту же ошибку, но только для столбцов с ее DefaultValue
установить любое значение (кроме значения по умолчанию <DBNull>
).Итак, я решил эту проблему следующим образом:
- Столбец Значение по умолчанию:Введите
<DBNull>
- Сохраните и снова откройте набор данных
Другие советы
Поскольку заполненные таблицы данных не допускают изменений в схеме, можно применить обходное решение следующим образом:
Создать новую таблицу данных
Используйте метод клона Datatable, чтобы создать DataTable с той же структурой и внести изменения в этот столбец
В конце используйте метод Importrow от DataTable, чтобы заполнить его данными.
ХТХ
Я нашел обходной путь.Если я удалю столбец данных и добавлю его обратно с другим типом данных, он будет работать.
Для тех, кто нашел это через Google, и у вас немного другой случай, когда в вашей таблице есть данные, и вы добавляете новый столбец (как я), если вы создаете столбец и устанавливаете тип данных в отдельных инструкциях, вы также получаете то же самое исключение.Однако, если вы сделаете это в том же операторе, все будет работать нормально.
Итак, вместо этого:
var column = myTable.Columns.Add("Column1");
column.DataType = typeof(int); //nope, exception!
Сделай это:
var column = myTable.Columns.Add("Column1", typeof(int));