2008-09-06 16 views
17

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:Error "No se puede cambiar DataType de una columna una vez que tiene datos" en Visual Studio 2005 DataSet Designer

Property value is not valid. Cannot change DataType of a column once it has data.

Desde mi entender, esto debe cambiar 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?

Respuesta

32

Obtengo el mismo error pero solo para columnas con su DefaultValue ajustado a cualquier valor (excepto el predeterminado <DBNull>). Así que la forma que tengo este problema fue:

  1. Columna ValorPredeterminado: Tipo de <DBNull>
  2. Guardar y volver a abrir el conjunto de datos
+0

Esto funciona, pero se debe tener en cuenta algo: hay una validación en el momento de guardar y cerrar. Si hay un problema, los campos simplemente se eliminan cuando cierra el conjunto de datos. Descubrí esto por las malas ya que perdí mucha información que ingresé. Para evitar pérdidas, asegúrese de que el conjunto de datos se guarde sin errores ANTES de intentar cerrarlo. – DAG

2

Desde DataTables rellenos no entretener a un cambio en el esquema de una solución se puede aplicar de la siguiente manera:

  1. Hacer método Clone una nueva tabla de datos

  2. Uso de tabla de datos a crear la tabla de datos con el misma estructura y realizar cambios en esa columna

  3. en ImportRow el uso final de tabla de datos método para poblarlo con datos.

HTH

3

he encontrado un trabajo alrededor. Si elimino la columna de datos y la vuelvo a agregar con el tipo de datos diferente, entonces funcionará.

+0

se han topado con el mismo problema. Extraño: no puede cambiarlo en el diseñador. Parece un error ... – aSkywalker

+0

El mismo error todavía está en VS2010. La misma solución funciona Elimine los valores predeterminados, guarde y cierre el DS, luego vuelva a abrir y puede editar los tipos de datos. – Andy

1

Para aquellos que encontrar este a través de Google y usted tiene un caso ligeramente diferente donde su tabla tiene datos y usted 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.

Así, 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)); 
Cuestiones relacionadas