Erro “Não é possível alterar o tipo de dados de uma coluna quando ela contém dados” no Visual Studio 2005 DataSet Designer

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

Pergunta

Eu tenho um DataSet no VisualStudio 2005.Preciso alterar o tipo de dados de uma coluna em uma das tabelas de dados de System.Int32 para System.Decimal.Quando tento alterar o tipo de dados no DataSet Designer Recebo o seguinte erro:

O valor da propriedade não é válido.Não é possível alterar o tipo de dados de uma coluna depois de ter dados.

Pelo que entendi, isso deveria alterar o tipo de dados no esquema do DataSet.Não vejo como pode haver dados para causar esse erro.

Alguém tem alguma idéia?

Foi útil?

Solução

Recebo o mesmo erro, mas apenas para colunas com seu DefaultValue definido para qualquer valor (exceto o padrão <DBNull>).Então, a maneira como resolvi esse problema foi:

  1. Valor padrão da coluna:Digitar <DBNull>
  2. Salve e reabra o conjunto de dados

Outras dicas

Como as tabelas de dados preenchidas não apresentam alterações no esquema, uma solução alternativa pode ser aplicada da seguinte forma:

  1. Faça uma nova tabela de dados

  2. Use o método clone da Datatable para criar o Datatable com a mesma estrutura e fazer alterações nessa coluna

  3. No final, use o método Importrow da Datatable para preenchê -lo com dados.

HTH

Eu encontrei uma solução alternativa.Se eu excluir a coluna de dados e adicioná-la novamente com o tipo de dados diferente, ela funcionará.

Para quem está descobrindo isso através do Google e você tem um caso um pouco diferente em que sua tabela tem dados e você adiciona uma nova coluna (como eu), se você criar a coluna e definir o tipo de dados em instruções separadas, você também obterá a mesma exceção.No entanto, se você fizer isso na mesma instrução, funcionará bem.

Então, em vez disso:

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

Fazem isto:

var column = myTable.Columns.Add("Column1", typeof(int));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top