“Ne peut pas changer le Type de données d'une colonne une fois qu'il a données” erreur dans Visual Studio 2005 Concepteur de DataSet

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

Question

J'ai un DataSet dans VisualStudio 2005.J'ai besoin de changer le type de données d'une colonne dans une des tables de données à partir de System.Int32 pour System.Decimal.Lorsque je tente de changer le type de données dans le DataSet Designer Je reçois l'erreur suivante:

La valeur de la propriété n'est pas valide.Impossible de modifier le Type de données d'une colonne une fois il dispose de données.

De ma compréhension, ce doit être en train de changer le type de données dans le schéma de l'ensemble de données.Je ne vois pas comment il peut y avoir toutes les données à l'origine de cette erreur.

Ce que quelqu'un a des idées?

Était-ce utile?

La solution

Je reçois la même erreur, mais uniquement pour les colonnes avec son DefaultValue toute valeur (à l'exception de la valeur par défaut <DBNull>).Donc, la façon dont j'ai eu autour de cette question, c'était:

  1. La Colonne Valeur Par Défaut :Type de <DBNull>
  2. Enregistrez et ouvrez de nouveau le jeu de données

Autres conseils

Depuis remplis Datatables ne pas connaître de changement dans le schéma d'une solution de contournement peuvent être appliquées comme suit:

  1. Faire une nouvelle datatable

  2. Utilisation datatable la méthode Clone de créer le datatable avec la même structure et d'y apporter des modifications colonne

  3. En fin de compte utiliser datatable est ImportRow méthode de le remplir avec des données.

HTH

J'ai trouvé un travail autour de.Si je supprime la colonne de données et l'ajouter avec le type de données différent, alors cela fonctionnera.

Pour ceux trouver via Google et vous avez un cas un peu différent où votre tableau a données et que vous ajoutez une nouvelle colonne (comme moi), si vous créez de la colonne et de définir le type de données dans des déclarations séparées, vous bénéficiez également de cette même exception.Toutefois, si vous le faites dans la même déclaration, il fonctionne très bien.

Ainsi, au lieu de ceci:

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

Faire cela:

var column = myTable.Columns.Add("Column1", typeof(int));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top