Error "No se puede cambiar el tipo de datos de una columna una vez que tiene datos" en Visual Studio 2005 DataSet Designer

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

Pregunta

Tengo un conjunto de datos en VisualStudio 2005.Necesito cambiar el tipo de datos de una columna en una de las tablas de datos de System.Int32 a System.Decimal.Cuando intento cambiar el tipo de datos en el DataSet Designer Recibo el siguiente error:

El valor de la propiedad no es válido.No se puede cambiar el tipo de datos de una columna una vez que tiene datos.

Según tengo entendido, esto debería cambiar el tipo de datos en el esquema del conjunto de datos.No veo cómo puede haber datos que causen este error.

¿Alguien tiene alguna idea?

¿Fue útil?

Solución

Recibo el mismo error pero solo para las columnas con su DefaultValue establecido en cualquier valor (excepto el predeterminado <DBNull>).Entonces, la forma en que solucioné este problema fue:

  1. Valor predeterminado de la columna:Escribir <DBNull>
  2. Guarde y vuelva a abrir el conjunto de datos

Otros consejos

Dado que las tablas de datos completadas no contemplan un cambio en el esquema, se puede aplicar una solución alternativa de la siguiente manera:

  1. Hacer una nueva tabla de datos

  2. Use el método Clone de DataTable para crear el DataTable con la misma estructura y realizar cambios en esa columna

  3. Al final, use el método Importrow de DataTable para llenarlo con datos.

HT

He encontrado una solución alternativa.Si elimino la columna de datos y la vuelvo a agregar con el tipo de datos diferente, funcionará.

Para aquellos que encuentran esto a través de Google y tienen un caso ligeramente diferente en el que su tabla tiene datos y agrega una nueva columna (como yo), si crea la columna y establece el tipo de datos en declaraciones separadas, también obtendrá la misma excepción.Sin embargo, si lo haces en la misma declaración, funciona bien.

Entonces, en lugar de esto:

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

Hacer esto:

var column = myTable.Columns.Add("Column1", typeof(int));
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top