“在Visual Studio 2005 DataSet Designer中出现数据时,无法更改列的DataType”错误

visual-studio dataset .net-2.0

16048 观看

5回复

1510 作者的声誉

我有一个数据集的VisualStudio 2005年,我需要从数据表中的一个更改列的数据类型System.Int32System.Decimal。当我尝试更改数据类型时,DataSet Designer我收到以下错误:

物业价值无效。一旦有数据,就无法更改列的DataType。

根据我的理解,这应该是更改DataSet架构中的数据类型。我没有看到有任何数据可以导致此错误。

有没有人有任何想法?

作者: firedfly 的来源 发布者: 2008 年 9 月 6 日

回应 (5)


3

2244 作者的声誉

由于填充的数据表不接受模式的更改,因此可以按如下方式应用变通方法:

  1. 创建一个新的数据表

  2. 使用datatable的Clone方法创建具有相同结构的数据表并对该列进行更改

  3. 最后使用datatable的ImportRow方法用数据填充它。

HTH

作者: Codeslayer 发布者: 06.09.2008 06:48

3

1510 作者的声誉

我找到了一个解决方法。如果我删除数据列并将其添加回不同的数据类型,那么它将起作用。

作者: firedfly 发布者: 06.09.2008 07:16

35

366 作者的声誉

决定

我得到相同的错误,但仅适用于DefaultValue设置为任何值的列(默认值除外<DBNull>)。所以我解决这个问题的方式是:

  1. 列DefaultValue:输入 <DBNull>
  2. 保存并重新打开数据集
作者: Are 发布者: 15.12.2009 07:17

1

2089 作者的声誉

对于那些通过谷歌找到这个并且你的表有一个稍微不同的情况,你的表有数据,你添加一个新列(像我),如果你创建列并在单独的语句中设置数据类型,你也会得到同样的例外。但是,如果您在同一语句中执行此操作,则可以正常工作。

所以,而不是这个:

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

做这个:

var column = myTable.Columns.Add("Column1", typeof(int));
作者: Logan 发布者: 18.12.2015 10:39

0

1 作者的声誉

我有同样的错误,但我重复使用表来显示不同的查询结果,使用myTable.Clear()和myTable.Columns.Clear()来清理查询之间的表。这让我很困惑,因为我无法看到表格如何包含导致错误的数据!

洛根的解决方案解决了这个问题。非常感谢先生 - 你救了我的理智。

作者: TwoSpoons100 发布者: 03.12.2018 12:09
32x32