C# 设置自动编号字段?
我有以下代码,在设置属性的行中抛出异常“COM异常未处理”:C# 设置自动编号字段?,c#,ms-access,dao,C#,Ms Access,Dao,我有以下代码,在设置属性的行中抛出异常“COM异常未处理”: var tbdefinition = dbase.TableDefs["MyDB"]; var field_auid = tbdefinition.Fields["myColumn"]; field_auid.Attributes = 4; 我做错了什么?在Jet数据库中,如果表中已经包含记录,则不能将现有字段的类型更改为“自动编号”。 但是,您可以添加一个新字段,这是一个自动编号字段。您是否尝试单步执行该字段或捕获异常?使用调试器
var tbdefinition = dbase.TableDefs["MyDB"];
var field_auid = tbdefinition.Fields["myColumn"];
field_auid.Attributes = 4;
我做错了什么?在Jet数据库中,如果表中已经包含记录,则不能将现有字段的类型更改为“自动编号”。
但是,您可以添加一个新字段,这是一个自动编号字段。您是否尝试单步执行该字段或捕获异常?使用调试器,查看该异常是否有提供更多信息的
InnerException
。您确定4
是此处的有效值吗?请解释(编辑问题)这与“自动编号”字段有什么关系。很抱歉,4是将“自动编号”属性设置为true的枚举VBA值的编号。嘿,很抱歉响应太晚,但我花了几个小时在家里安装新系统。谢谢你说得很清楚@Olivier。我转向DAO的原因是,当我执行OledbCommand ALTER命令时,我发现该字段没有更改为自动编号。这很奇怪,因为它对我创建的另一个表起到了作用。我的数据库有两个表,其中一个表的外键指向另一个表的主键。让我们称它们为Parent和Child,以便于下面解释我的代码。1)创建Parent1并设置PK。然后使用DAO,我设置一个位字段作为复选框,并从一个数据集填充表,该数据集包含父数据库的记录+具有不同数据的同一数据库的另一个副本的记录。2) 以类似的方式创建Child2。3) 更改要设置为自动编号的表格字段。4) 删除表Parent和Child,并将Parent1重命名为Parent,将Child1重命名为Child。5) 最后,我将FK添加到子表中。一些奇怪的事情。我父母的字段成功更改为自动编号,但我孩子的字段没有。事实上是这样的!但是,当我将表从Child1重命名为Child时,似乎会丢失该属性。