ACCESS / VBA:Insert into with autonumbering字段返回恼人的警告

时间:2011-02-15 15:34:34

标签: sql ms-access vba access-vba ms-access-2010

好的,这是情况
我们有Table1(A,B,C)
A是自动编号字段。

我正在通过vba喂餐桌 由于A是自动编号,我忽略了它:

SQL = INSERT INTO TABLE1(B,C) VALUES ('something','something else')
DoCmd.RunSQL SQL

这样可行,访问权限给我第一个警告,我将创建一个新行 哪个对我好然而就在那之后我得到了这个:

  

Microsoft Access无法在更新或追加查询中添加所有记录   由于类型转换失败,它将1个字段设置为Null    blahblahblah点击确定无论如何都要运行查询

如果我点击确定,这不会阻止它工作,但我不希望我的用户看到 警告。
无论如何它会弹出来?将自动编号字段留空是不正常的?
还有其他我不了解的程序吗?我错过了什么?

我环顾谷歌和这里,但找不到答案:/

(我不想将警告设置为false,因为我想要添加字段和任何其他最终错误的第一个警告是可见的。)

3 个答案:

答案 0 :(得分:6)

Microsoft Access无法在更新或追加查询中添加所有记录。 由于类型转换失败,它将1个字段设置为Null。

该错误与您的自动编号字段无关。检查字段B和C的数据类型。

在此示例中,字段C设置为number,因此我得到与您相同的错误,并且INSERT成功但在字段C中使用Null:

DoCmd.RunSQL "INSERT INTO TABLE1(B,C) VALUES ('something','something else')"

但是,在字段C中插入数值可以正常工作。

DoCmd.RunSQL "INSERT INTO TABLE1(B,C) VALUES ('something',99)"

编辑:这个也可以在为字段C提供文本值的情况下工作。区别在于文本值是数据库引擎可以转换为有效数字的值:

DoCmd.RunSQL "INSERT INTO TABLE1(B,C) VALUES ('something','27')"

答案 1 :(得分:2)

显然是由于自动编号字段吗?添加记录后(单击“仍然运行”运行查询),只有自动编号字段为空?

Autonumber不应该发生此错误;至少,我以前从未见过它。

答案 2 :(得分:2)

听起来你正在将一个空字符串传递给其中一个值,并将该列设置为NULL。

当你说

  

这并不妨碍它的运作   如果我点击确定

是否正确填充了所有字段?包括自动编号?