“一旦列有数据就无法更改其数据类型” Visual Studio 2005 数据集设计器中的错误

发布于 2024-07-05 00:26:04 字数 295 浏览 11 评论 0原文

我在 VisualStudio 2005 中有一个数据集。我需要将其中一个数据表中的列的数据类型从 System.Int32 更改为 System.Decimal。 当我尝试更改数据集设计器中的数据类型时,我收到以下错误:

属性值无效。 无法更改列的数据类型一次 它有数据。

根据我的理解,这应该更改数据集架构中的数据类型。 我不明白如何有任何数据会导致此错误。

有人有什么想法吗?

I've got a DataSet in VisualStudio 2005. I need to change the datatype of a column in one of the datatables from System.Int32 to System.Decimal. When I try to change the datatype in the DataSet Designer I receive the following error:

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

From my understanding, this should be changing the datatype in the schema for the DataSet. I don't see how there can be any data to cause this error.

Does any one have any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

这是一个老问题,但在 VS 2019 中仍然可能发生

解决方案:

  1. 将 DefaultValue 更改为
  2. 保存数据集
  3. 关闭数据集设计器
  4. 重新打开设计器

现在应该可以毫无问题地更改类型。

Its an old Question but it still can happen at VS 2019

Solution:

  1. Change the DefaultValue to <DBNull>
  2. Save the Dataset
  3. Close the DataSet Designer
  4. Re-Open the Designer

Now it should be possible to change the type without any problem.

瞳孔里扚悲伤 2024-07-12 00:26:05

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

I have found a work around. If I delete the data column and add it back with the different data type, then it will work.

另类 2024-07-12 00:26:05
  • 在可视化设计器中关闭数据集
  • 右键单击​​数据集,选择打开方式...
  • 选择XML(文本)编辑器
  • 在 XML 中找到该列,它将在您的数据集中看起来像这样:
<xs:element name="DataColumn1"
  msprop:Generator_ColumnVarNameInTable="columnDataColumn1"
  msprop:Generator_ColumnPropNameInRow="DataColumn1"
  msprop:Generator_ColumnPropNameInTable="DataColumn1Column"
  msprop:Generator_UserColumnName="DataColumn1" 
  type="xs:int" 
  minOccurs="0" />
  • type="xs:int" 更改为 type="xs:decimal"
  • 保存并关闭 XML 编辑器
  • 您可能需要再次右键单击数据集并选择运行自定义工具
  • Close the DataSet in the visual designer
  • Right click the dataset, choose Open With...
  • Choose XML (Text) Editor
  • Find the column in the XML, in your dataset it will look something like:
<xs:element name="DataColumn1"
  msprop:Generator_ColumnVarNameInTable="columnDataColumn1"
  msprop:Generator_ColumnPropNameInRow="DataColumn1"
  msprop:Generator_ColumnPropNameInTable="DataColumn1Column"
  msprop:Generator_UserColumnName="DataColumn1" 
  type="xs:int" 
  minOccurs="0" />
  • Change the type="xs:int" to type="xs:decimal"
  • Save and close the XML editor
  • You may need to right click the DataSet again and choose Run Custom Tool
孤寂小茶 2024-07-12 00:26:05

对于那些通过 Google 发现这一点的人来说,您的情况略有不同,您的表已获取数据并且添加了一个新列(像我一样),如果您创建该列并在单独的语句中设置数据类型,您也会得到相同的异常。 但是,如果您在同一条语句中执行此操作,则效果很好。

因此,不要这样做:

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

这样做:

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

For those finding this via Google and you have a slightly different case where your table has got data and you add a new column (like me), if you create the column and set the datatype in separate statements you also get this same exception. However, if you do it in the same statement, it works fine.

So, instead of this:

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

Do this:

var column = myTable.Columns.Add("Column1", typeof(int));
﹉夏雨初晴づ 2024-07-12 00:26:05

我收到相同的错误,但仅限于 DefaultValue 设置为任何值的列(默认 除外)。 所以我解决这个问题的方法是:

  1. Column DefaultValue : Type in
  2. 保存并重新打开数据集

I get the same error but only for columns with its DefaultValue set to any value (except the default <DBNull>). So the way I got around this issue was:

  1. Column DefaultValue : Type in <DBNull>
  2. Save and reopen the dataset
云雾 2024-07-12 00:26:05

由于填充的数据表不接受架构中的更改,因此可以应用以下解决方法:

  1. 创建新数据表

  2. 使用数据表的克隆方法
    使用相同的方法创建数据表
    结构并对其进行更改
    column

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

华泰

Since filled Datatables do not entertain a change in the schema a workaround can be applied as follows:

  1. Make a new datatable

  2. Use datatable's Clone method to
    create the datatable with the same
    structure and make changes to that
    column

  3. In the end use datatable's ImportRow
    method to populate it with data.

HTH

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文