Errore "Impossibile modificare il tipo di dati di una colonna una volta che contiene dati" in Visual Studio 2005 DataSet Designer

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

Domanda

Ho un DataSet in VisualStudio 2005.Devo cambiare il tipo di dati di una colonna in uno dei datatables da System.Int32 A System.Decimal.Quando provo a cambiare il tipo di dati nel file DataSet Designer Ricevo il seguente errore:

Il valore della proprietà non è valido.Impossibile modificare il tipo di dati di una colonna una volta che ha dati.

Da quanto ho capito, questo dovrebbe cambiare il tipo di dati nello schema per DataSet.Non vedo come possano esserci dati che causano questo errore.

Qualcuno ha qualche idea?

È stato utile?

Soluzione

Ottengo lo stesso errore ma solo per le colonne con its DefaultValue impostato su qualsiasi valore (tranne quello predefinito <DBNull>).Quindi il modo in cui ho risolto questo problema è stato:

  1. Valore predefinito colonna:Digitare <DBNull>
  2. Salvare e riaprire il set di dati

Altri suggerimenti

Poiché i Datatable compilati non prevedono modifiche allo schema, è possibile applicare una soluzione alternativa come segue:

  1. Crea un nuovo datatable

  2. Utilizzare il metodo clone di DataTable per creare il dataTable con la stessa struttura e apportare modifiche a quella colonna

  3. Alla fine usa il metodo ImporTrow di DataTable per popolarlo con i dati.

HTH

Ho trovato una soluzione.Se elimino la colonna dati e la aggiungo nuovamente con il tipo di dati diverso, funzionerà.

Per coloro che lo trovano tramite Google e hai un caso leggermente diverso in cui la tua tabella ha dati e aggiungi una nuova colonna (come me), se crei la colonna e imposti il ​​tipo di dati in istruzioni separate ottieni anche la stessa eccezione.Tuttavia, se lo fai nella stessa istruzione, funziona bene.

Quindi, invece di questo:

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

Fai questo:

var column = myTable.Columns.Add("Column1", typeof(int));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top