Error "No se puede cambiar el tipo de datos de una columna una vez que tiene datos" en Visual Studio 2005 DataSet Designer
visual-studio .net-2.0 (4)
Dado que las tablas de datos rellenas no entretienen un cambio en el esquema, se puede aplicar una solución alternativa de la siguiente manera:
Crear una nueva tabla de datos
Utilice el método Clone de datatable para crear la tabla de datos con la misma estructura y realice cambios en esa columna
Al final use el método ImportRow de datatable para llenarlo con datos.
HTH
Tengo un DataSet 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 trato de 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.
Desde mi entendimiento, esto debería estar cambiando el tipo de datos en el esquema para el conjunto de datos. No veo cómo puede haber datos para causar este error.
¿Alguien tiene alguna idea?
Obtengo el mismo error pero solo para columnas con DefaultValue
establecido en cualquier valor (excepto el valor predeterminado <DBNull>
). Así que la forma en que solucionó este problema fue:
- Columna DefaultValue: escriba
<DBNull>
- Guarde y vuelva a abrir el conjunto de datos
Para aquellos que encuentran esto a través de Google y tienen un caso ligeramente diferente donde su tabla tiene datos y agrega una nueva columna (como yo), si crea la columna y configura el tipo de datos en declaraciones separadas, también obtiene esta 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));
He encontrado un trabajo alrededor. Si elimino la columna de datos y la vuelvo a agregar con el tipo de datos diferente, entonces funcionará.