【问题标题】:Set autonumber field?设置自动编号字段?
【发布时间】:2012-01-26 22:08:23
【问题描述】:

我有以下代码在我设置属性的行中抛出异常“COM Exception was unhandled”:

var tbdefinition = dbase.TableDefs["MyDB"];
var field_auid = tbdefinition.Fields["myColumn"];
field_auid.Attributes = 4;

我做错了什么?

【问题讨论】:

  • 您是否尝试过单步执行或捕获异常?也许它会给你更多的细节。
  • 使用调试器并查看该异常是否具有提供更多信息的InnerException。您确定4 是这里的有效值吗?请解释(编辑问题)这与自动编号字段有什么关系。
  • 抱歉,4 是将 autoNumber 属性设置为 true 的枚举 VBA 值的编号。

标签: c# ms-access dao


【解决方案1】:

在 Jet 数据库中,如果表已包含记录,则无法将现有字段的类型更改为自动编号。 但是,您可以添加一个新字段,即自动编号字段。

【讨论】:

  • 嘿,很抱歉回复晚了,但我花了几个小时在家设置我的新系统。感谢您明确@Olivier。我转向 DAO 的原因是,当我执行 OledbCommand ALTER 命令时,我发现该字段没有 ALTER 为 AutoNumber。这很奇怪,因为它为我创建的另一个表做了诀窍。我的数据库有 2 个表,其中一个具有另一个主键的外键。让我们称它们为 Parent 和 Child 以便于我的代码的以下解释。
  • 1) 创建 Parent1 并设置 PK。然后使用 DAO,我将一个 BIT 字段设置为一个复选框,并从一个 DataSet 中填充表格,该 DataSet 包含 Parent 的记录 + 具有不同数据的同一数据库的另一个副本的记录。 2)以类似的方式创建 Child2。 3) ALTER 我想设置为自动编号的表字段。 4) 删除表 Parent 和 Child 并将 Parent1 重命名为 Parent 并将 Child1 重命名为 Child。 5) 最后我将 FK 添加到子表中。
  • 一些奇怪的事情。我父母的字段成功更改为自动编号,但我的孩子没有。嗯,它确实如此!但似乎当我将表从 Child1 重命名为 Child 时,它会丢失属性。
猜你喜欢
  • 2011-06-07
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 2021-09-23
  • 2013-03-13
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多