2008-09-06 6 views
17

J'ai un DataSet dans VisualStudio 2005. Je dois modifier le type de données d'une colonne dans l'une des données de System.Int32 à . Lorsque je tente de changer le type de données dans le DataSet Designer je reçois l'erreur suivante:"Impossible de modifier DataType d'une colonne une fois qu'il a des données" dans Visual Studio 2005 DataSet Designer

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

De ma compréhension, cela devrait changer le type de données dans le schéma pour le DataSet. Je ne vois pas comment il peut y avoir des données pour provoquer cette erreur.

Quelqu'un a-t-il des idées?

Répondre

32

Je reçois la même erreur, mais uniquement pour les colonnes dont le DefaultValue est défini sur n'importe quelle valeur (sauf la valeur par défaut <DBNull>). Donc, la façon dont je suis autour de cette question était:

  1. Colonne DefaultValue: Tapez <DBNull>
  2. Enregistrer et rouvrir le jeu de données
+0

Cela fonctionne, mais quelque chose doit être noté: il y a une validation faite au moment où vous enregistrez et fermez. S'il y a un problème, les champs sont simplement supprimés lorsque vous fermez l'ensemble de données. Je l'ai trouvé à la dure car j'ai perdu beaucoup d'informations. Pour éviter toute perte, assurez-vous que l'ensemble de données enregistre sans erreurs AVANT d'essayer de le fermer. – DAG

2

Depuis datatables mastiqués n'entretenez pas un changement dans le schéma d'une solution de contournement peut être appliqué comme suit:

  1. Faire une nouvelle datatable

  2. Utilisez la méthode Clone de datatable à créer datatable avec le même structure et apporter des modifications à cette colonne

  3. dans la ImportRow de l'utilisation finale datatable méthode pour le peupler avec des données.

HTH

3

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

+0

J'ai couru dans le même problème. Étrange - ne peut pas le changer dans le concepteur. On dirait un bug ... – aSkywalker

+0

Le même bug est toujours dans VS2010. La même solution fonctionne. Supprimez les valeurs par défaut, enregistrez et fermez le DS, puis rouvrez et vous pouvez modifier les types de données. – Andy

1

Pour ceux qui trouvent cela via Google et vous avez un cas un peu différent où votre table a des données et vous ajoutez une nouvelle colonne (comme moi), si vous créez la colonne et définissez le type de données dans des instructions séparées vous obtenez également cette même exception. Cependant, si vous le faites dans la même déclaration, cela fonctionne très bien.

Ainsi, au lieu de cela:

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

Faites ceci:

var column = myTable.Columns.Add("Column1", typeof(int)); 
Questions connexes