【问题标题】:"Cannot change DataType of a column once it has data" error in Visual Studio 2005 DataSet DesignerVisual Studio 2005 数据集设计器中的“一旦有数据就无法更改列的数据类型”错误
【发布时间】:2010-09-08 00:20:15
【问题描述】:

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

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

据我了解,这应该是更改 DataSet 架构中的数据类型。我看不出有什么数据会导致这个错误。

有人有什么想法吗?

【问题讨论】:

    标签: visual-studio dataset .net-2.0 dataset-designer


    【解决方案1】:

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

    1. 制作新的数据表

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

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

    HTH

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我也遇到了同样的问题。奇怪 - 无法在设计器中更改它。看起来像一个错误...
      • VS2010 中仍然存在相同的错误。相同的解决方案有效。删除默认值,保存并关闭DS,然后重新打开即可编辑数据类型。
      【解决方案3】:

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

      1. 列默认值:输入<DBNull>
      2. 保存并重新打开数据集

      【讨论】:

      • 这可行,但需要注意的是:在您保存和关闭时会进行验证。如果有问题,那么当您关闭数据集时,这些字段就会被删除。当我丢失了很多我输入的信息时,我很难发现这一点。为防止丢失,请在尝试关闭数据集之前确保数据集正确保存。
      • 大声笑,你真的必须保存并关闭然后打开它才能工作,谢谢救生员
      • 谢谢,这工作:)。 “保存并重新打开”数据集是必须的。
      【解决方案4】:

      对于那些通过 Google 找到此内容并且您的表有数据并添加新列(如我)的情况略有不同的人,如果您创建列并在单独的语句中设置数据类型,您也会得到相同的结果例外。但是,如果您在同一个语句中执行此操作,则效果很好。

      所以,不要这样:

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

      这样做:

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

      【讨论】:

        【解决方案5】:
        • 在可视化设计器中关闭 DataSet
        • 右击数据集,选择Open With...
        • 选择XML (Text) Editor
        • 在 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 编辑器
        • 您可能需要再次右键单击数据集并选择Run Custom Tool

        【讨论】:

          【解决方案6】:

          这是一个老问题,但它仍然可以在 VS 2019 上发生

          解决方案:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-03
            • 2012-04-16
            • 1970-01-01
            • 2010-12-11
            • 1970-01-01
            • 1970-01-01
            • 2011-07-30
            • 1970-01-01
            相关资源
            最近更新 更多